对于前。我有: “wrapper.h”
class wrapper : public QWidget
{
Q_OBJECT
public:
Wrapped_class m_class;
private:
QTimer* m_timer;
}
“Wrapped_class.h”
class Wrapped_class
{
public:
Wrapped_class();
public slots:
f(); // slot which is called when m_timer send signal timeout()
}
“Wrapped_class.cpp”
Wrapped_class::Wrapped_class()
{
QOBject::connect(wrapper::m_timer, SIGNAL(timeout()), this, SLOT( f()))
}
我收到错误的包装器:: m_timer无法访问
答案 0 :(得分:1)
您需要班级pointer
或reference
才能访问其non static
成员。在被包装的类被包裹时将pointer
传递给
将这样的内容添加到Wrapped_class
:
void Wrapped_class::setWrapper(wrapper *w)
{
m_wrapper = w;
}
并在包装对象时调用此函数。在构造函数
中将m_rapper
初始化为nullptr
答案 1 :(得分:1)
根据您的意图和系统设计,您可以选择:
friend
才能访问private
成员。答案 2 :(得分:0)
m_timer
不是静态成员,因此您无法像这样访问它。在Wrapped_class.cpp
中,您需要包装类的实例才能使用它
答案 3 :(得分:0)
除了wrapper::m_timer
不是静态的问题,它也是私有,这意味着Wrapped_class
无法访问它。您需要让Wrapped_class
为wrapper
的朋友才能访问私人会员。