如何处理“类类型重新定义”

时间:2012-06-07 05:51:31

标签: c++

我正在尝试使用开源VC ++代码。 我正在尝试将一个新项目添加到现有的VC ++解决方案中,这个解决方案变成了一场噩梦。 我面临的一个问题是修复“类型重新定义”错误,我已经解决了一些问题,但现在我已经遇到了其他问题。代码库是巨大的,所以没有snippests ...

我的问题是,是否有任何“最佳做法”来追踪这些错误?

感谢。

3 个答案:

答案 0 :(得分:2)

通过类型重定义,我假设在工作空间项目中定义了相同名称class es或typedef,并且它们在编译时导致问题(不要混淆多个定义链接器错误)。

最佳做法是始终将它们包含在模块或项目基础上的 namespace
e.g。

// project1.h
namespace project1 {
  class X {};
}

// project2.h
namespace project2 {
  class X {};
}

答案 1 :(得分:1)

我的建议是将所有代码放在单独的名称空间中的单独项目中。那你就不用担心冲突了。如果你有很多头文件和源文件可能会有很多工作,但从长远来看它可能是值得的。

并且您不必将命名空间添加到所有函数/类,只需在所有标头/源文件的顶部添加namespace foo {,在底部添加相应的}

答案 2 :(得分:0)

当您尝试在两个或多个不同的程序中包含相同的头文件时,例如 调用B和B调用C,如果在A和B中都包含C,则会发生这种错误。同样的事发生在我身上,并解决了它。