我得到了一个时髦的多重定义错误。包含结构如下:
MAIN -> VM -> BACKEND
Main包括vm,其中包括后端。
我在后端有三个全局char *
指针,而且我得到了多个定义错误的成员。
我在vm.cpp
,main.cpp
和moc_vm.cpp
中获得了多个定义(我使用Qt)。
我尝试在其他来源中将指针声明为外部指针,但它没有帮助。所有预处理器防护装置都已到位,我不知道为什么我会收到错误,因为它们显然只在一个地方定义......
有什么想法吗?
编辑:这很奇怪,我可以将BACKEND包含在MAIN中并且没有问题,只有当链是MAIN> VM> BACKEND时我才会收到错误。
答案 0 :(得分:0)
在头文件中将它们定义为外部。 在单个cpp文件中定义它们(而不是外部)。
你应该安全。
答案 1 :(得分:0)
使用extern char *name;
,然后在一个.cpp文件中使用char *name = "Something";
。
答案 2 :(得分:0)
通过将指针更改为静态来解决,因此它们不会外部链接。无论如何,它们不会被任何其他来源访问。所以这毕竟是一个联系问题......