【发布时间】:2010-02-18 19:48:16
【问题描述】:
我在理解 QT4 中 parent 指针的用法时遇到了一些问题。
class firstClass : public QWidget
{
Q_OBJECT
public:
firstClass(QWidget *parent = 0);
~firstClass();
void doSomething();
private:
secondClass * myClass;
};
class secondClass : public QWidget
{
Q_OBJECT
public:
secondClass(QWidget *parent = 0);
void doSomethingElse();
};
我想在运行doSomethingElse() 时调用doSomething() 方法。有没有办法使用parent指针来做到这一点?
我尝试了parent->doSomething(),但它不起作用。 Qt Creator 似乎只建议 parent-> 之后的 QObject 类中的方法。
另一方面,我不能像secondClass(firstClass *parent = 0); 那样写——编译器返回错误:
感谢您的任何建议。
【问题讨论】:
-
只要 firstClass 的定义在定义 secondClass 之前被#included,您的替代构造函数定义应该编译:
secondClass::secondClass(firstClass *parent = 0) : QWidget(parent) { }你得到什么编译器错误? -
我不明白为什么编译器不允许你将 firstClass 指针传递给 secondClass 的构造函数。
-
两个类都定义在不同的文件中,我从 secondClass.h 得到错误 - firstClass 没有被声明(与#include "firstClass.h" 相同,没有它)
-
对我来说,这表明某处存在另一个问题——可能包含保护是相同的?此外,它可能会在头文件中前向声明。