gpt4 book ai didi

c++ - 私有(private)(隐藏)QSharedData

转载 作者:太空狗 更新时间:2023-10-29 20:29:44 25 4
gpt4 key购买 nike

我有一个类,它有一些我想对调用者隐藏的数据成员(因为包括它们类型的 header 会显着增加编译时间,并且需要每个使用此类的项目添加一个额外的路径到它们的包含路径)。

这个类使用QSharedDataPointer来存储这些数据。这样就可以使用默认的复制构造函数进行复制。

这个类的基本结构是:

class MyClass {
private:
QSharedDataPointer<MySharedClassData> m_data;
};

定义MySharedClassData 的情况下,有什么花哨的技巧可以做到这一点吗? (继承自 QSharedData )在同一个头文件中?或者还有其他隐藏数据字段的好方法吗?

我已经尝试过 MySharedClassData 的前向声明但这没有用(尽管 m_dataprivate )。

目前我能想到的唯一解决方案是声明 m_data作为QSharedDataPointer<QSharedData>但是每次我想访问它时我都需要转换数据成员。有更好的解决方案吗?

最佳答案

只要您的构造函数和析构函数未在 header 中定义,前向声明就应该起作用。以下类在我的计算机上编译:

#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

如果您尝试内联您的构造函数/析构函数,那么您可能会收到:C2027: use of undefined type 'type' under VS。

关于c++ - 私有(private)(隐藏)QSharedData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9176191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com