0

例如。我得到了:“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()))
}

我收到无法访问 wrapper::m_timer 的错误

4

4 回答 4

1

你需要一个pointerorreference类来访问它的non static成员。包装时将a 传递pointer给包装的类

将这样的内容添加到您的Wrapped_class

void Wrapped_class::setWrapper(wrapper *w)
{
    m_wrapper = w;
}

并在包装对象时调用此函数。在构造函数中初始化m_rappernullptr

于 2012-08-16T08:52:54.717 回答
1

根据您的意图和系统设计,您可以选择:

  1. 将“包装”类的指针或引用传递给“包装”类。请注意,您必须将包装类定义为 afriend才能访问private成员。
  2. 编写“包装器”类的成员函数来处理两个类之间的交互。(这并不真正符合您的限制,但它是一种设计替代方案。)
于 2012-08-16T08:59:40.560 回答
0

m_timer不是静态成员,因此您不能那样访问它。在Wrapped_class.cpp你需要包装类的实例来使用它

于 2012-08-16T08:53:43.310 回答
0

除了wrapper::m_timer不是静态的问题外,它也是私有的,这意味着Wrapped_class无法访问它。您需要交Wrapped_class朋友wrapper才能访问私人成员。

于 2012-08-16T08:58:03.383 回答