我编写了一些代码来与 Qt 应用程序通信。现在我尝试重构这段代码,但我遇到了一些问题。
我的代码在这里: https ://gist.github.com/abuteau/6f8bd9f072dbb3f61144
当我编译时,我对所有 QWidget 都无效地使用了不完整的类型和前向声明。
当我在没有命名空间的情况下编码时,我没有错误。
我该如何解决?
问候,
我编写了一些代码来与 Qt 应用程序通信。现在我尝试重构这段代码,但我遇到了一些问题。
我的代码在这里: https ://gist.github.com/abuteau/6f8bd9f072dbb3f61144
当我编译时,我对所有 QWidget 都无效地使用了不完整的类型和前向声明。
当我在没有命名空间的情况下编码时,我没有错误。
我该如何解决?
问候,
当你写:
namespace simulatorCommunication {
class QLabel;
class QPushButton;
class QUdpSocket;
...
您说您将在命名空间中定义上述类,但它们是由 Qt 定义的。
将这些类的声明向前移动到您的命名空间的 open 之上
给你不完整类型错误的类不在你的命名空间中。可能,您必须为这些对象指定编译器的命名空间。如果您给出编译器错误,我可能会更准确。
您还可以在自己的命名空间中对 Qt 类进行前向声明,但这些类将由 Qt 在 Qt 命名空间中定义,而不是您的。
fwd 声明必须在定义它的命名空间中