将自定义类添加到Qt项目中

Adding a custom class to a Qt project

本文关键字:Qt 项目 添加 自定义      更新时间:2023-10-16

我一直在编写一个保存在自定义类中的物理模拟,我知道我正试图用Qt 4.8为它编写一个GUI。

在我看来,这样做的权利是添加我的类的一个实例作为Qt中MainWindow对象的成员。

我的家常菜课在这方面做得很好,但我很难把它添加到Qt项目中。我试着用通常的#包括"my_custom_class.h"(所有内容都在这个头中定义,我通常不会将其拆分到cpp文件中)

到我的mainwindow.h文件,在编译时,我为第一个类的每个成员都会得到一条错误消息:my_custom_class::member1()的多重定义,等等…

我还尝试了:

class my_custom_class;

但它也不起作用,我对此感到不舒服,因为我真的不明白它到底能做什么。

我通常不会将其拆分到cpp文件中

C和C++有头文件(.h)和实现文件(.C/.cpp)是有原因的。在没有看到代码的情况下,我想说你不使用实现文件也会给自己带来困难。

同样,如果不显示代码,就很难准确地识别问题,但我的猜测是,您缺少一个标头保护。

当您为头调用#include时,编译器会添加该文件的内容以进行构建。如果多个文件直接或通过调用包含头文件的文件间接调用相同的#include,则会添加相同的符号进行编译,从而导致"…的多重定义"错误

您可以在头文件中添加一个头保护,如下所示:-

#ifndef _MYCLASS_H_
#define _MYCLASS_H_
//... add your class here
#endif

第一次包含标头时,它将添加符号并定义_MYCLASS_H_。任何后续调用都会发现_MY_CLASS_H_已经定义,不会再添加符号。

您应该对所有头文件执行此操作。我还建议你在头中定义类,并创建一个单独的实现文件。如果有什么不同的话,它会加快编译时间。