Seb*_*ski 3 c++ qt private-members qshareddata
我有一个类,它有一些我希望从调用者隐藏的数据成员(因为包含其类型的头显着增加了编译时间,并且它需要使用此类的每个项目添加其包含路径的附加路径).
该类用于QSharedDataPointer存储此数据.这样就可以使用默认的复制构造函数进行复制.
这个类的基本结构是:
class MyClass {
private:
QSharedDataPointer<MySharedClassData> m_data;
};
Run Code Online (Sandbox Code Playgroud)
如果没有在同一个头文件中定义MySharedClassData(继承自QSharedData),是否有任何花哨的技巧?或者还有其他隐藏数据字段的好方法吗?
我已经尝试了前向声明,MySharedClassData但这没有用(尽管事实m_data是这样private).
我目前可以解决的唯一解决方案是声明m_data为,QSharedDataPointer<QSharedData>但是每次我想要访问它时我都需要转换数据成员.有更好的解决方案吗?
只要构造函数和析构函数未在头文件中定义,前向声明就应该正常工作.以下类在我的计算机上编译:
#ifndef MAIN_WINDOW_HXX
#define MAIN_WINDOW_HXX
#include <QMainWindow>
#include <ui_MainWindow.h>
#include <QSharedDataPointer>
class MySharedClassData;
class MainWindow : public QMainWindow, private Ui_MainWindow {
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0, Qt::WindowFlags flags = 0);
virtual ~MainWindow();
QSharedDataPointer<MySharedClassData> m_data;
};
#endif
Run Code Online (Sandbox Code Playgroud)
如果你试图内联你的构造函数/析构函数,那么你可能会收到一个:C2027: use of undefined type 'type'在VS下.
| 归档时间: |
|
| 查看次数: |
796 次 |
| 最近记录: |