Qt5,C++。中型项目。编写了几个类,其中一些接受指向其他类实例的参数指针以进行交互。一切正常且合乎逻辑,例如:
FirstClass::FirstClass(SecondClass * someObject) { someObject->BigRedButton->setDisabled(true); }
一切都按照父辈遗赠的方式实现:带有声明的头文件和.cpp带有实现的文件。但是,有一种行为对我来说非常难以理解:某个类(普通,带有 GUI 实现)不想充当参数。在任何其他类的构造函数中指定对它的引用并尝试创建此类的实例时,我在签名中看到的不是(StrangeClass *),而是指向 int (!) :的指针(int *)。
让我们称之为神秘类StrangeClass。它是规范实现的:一个头文件和一个实现文件,没什么奇怪的。它的头文件:
class StrangeClass : public QObject
{
Q_OBJECT
QLabel * end_date;
QLabel * label_logo;
QPlainTextEdit * logWindow;
QPushButton * bCalc;
QPushButton * bExit;
QPushButton * bTest;
bool firstDisplay;
public:
std::vector<QPushButton*> buttons;
QMainWindow * mainw;
StrangeClass(FirstClass *); // в конструкторе используется ссылка на другой объект
void start();
~StrangeClass();
StrangeClass() = delete;
};
我会理解是否存在某种逻辑错误,他们说您不能将指向StrangeClass参数的指针传递给SomeClass,但重点和问题是为什么 QtCreator 告诉我我想将指针传递给构造函数int。如果您在签名中输入任何其他链接和数据类型,一切都会被正确感知,范围没有问题,但StrangeClass*我看到int*.
我希望我能够清楚地描述我的问题。你有没有类似的耙子,如何决定在哪里看?
错误在于递归包含头文件: