Điều này thực sự giống như một lỗi trong Qt. Bất cứ ai có một giải pháp hoặc tôi nên nộp nó như là một lỗi?Không thể truy cập thành viên riêng được khai báo trong lớp 'QReadWriteLock'Error lỗi C2248:' QReadWriteLock :: QReadWriteLock '
#include <QReadWriteLock>
class FileInfoWrapper {
public:
explicit FileInfoWrapper(const QFileInfo& _fileInfo);
~FileInfoWrapper();
private: // also tried public
mutable QReadWriteLock lock_;
Trước khi thậm chí sử dụng nó, tôi nhận được lỗi:
Error 1 error C2248: 'QReadWriteLock::QReadWriteLock' : cannot access private member declared in class 'QReadWriteLock'
Không quan trọng nếu nó private/public hoặc những gì lớp tôi bao gồm. Tôi dường như không thể tạo nó trên ngăn xếp. Thay vào đó tôi đã tạo một trên heap sử dụng 'mới', nhưng khi tôi cố gắng để xóa nó trong constructor treo ứng dụng của tôi với:
Unhandled exception at 0x5090f39a (QtCored4.dll) in MyApp.exe: 0xC0000005: Access violation reading location 0xfeeeff0e.
Gọi stack:
QtCored4.dll!QHash::~QHash() Line 283 + 0xa bytes C++ QtCored4.dll!QReadWriteLockPrivate::~QReadWriteLockPrivate() + 0x38 bytes C++ QtCored4.dll!QReadWriteLockPrivate::`scalar deleting destructor'() + 0xf bytes C++ QtCored4.dll!QReadWriteLock::~QReadWriteLock() Line 137 + 0x1e bytes C++ CloudSync.exe!FileInfoWrapper::~FileInfoWrapper() Line 76 + 0x15 bytes C++
Biến 'd' trong QReadWriteLockPrivate dường như bị xóa hai lần. Tuy nhiên, điều này làm việc trong một lớp khác, nơi tôi cũng đã phải tạo khóa trên heap và sau đó xóa nó trong constructor.
Chạy Qt 4.8.0 trong Visual Studio. Đã có cùng một vấn đề trong Qt creator 4.7.4.
Không thể sao chép bằng Qt 4.7.4, MinGW, Windows 7 x64. –