2011-07-19 148 views
1

我有一个头文件“myHeaderFile.h”文件看起来像下面这是由释放EXE和单元测试EXE使用。C++头文件包含错误

#ifndef MYHEADERFILE_H 
#define MYHEADERFILE_H 

namespace myname1 
{ 
namespace myname2 
{ 
    class A 
    { 
      ... 
    }; 
#ifdef MYTESTCLASS 
    class TestABase 
    { 
     ... 
    } 
#endif 
} 
} 
#endif 

现在我们有单元测试文件myUnitTest.h文件文件,如下

#ifndef MYUNITEST_H 
#define MYUNITTEST_H 

#ifndef MYTESTCLASS 
#define MYTESTCLASS 1 
#endif 
#include "myHeaderFile.h" 
class TestClass : public myname1::myname2::TestABase 
{ 
    ... 
}; 
#endif 

现在myUnitTest.cpp我有以下

#include "myUnitTest.h" 

// Definition stuff. 

我编译时我得到错误的错误C2039:TestABase:不是myname1 :: myname2的成员' myUnitTest.h(31):错误C2504:TestABase:基类未定义

是什么导致以上错误?请帮我解决上述错误。注意:myHeaderFile.h来自库,所以我不能改变这个头文件。

谢谢!

+0

代码片段被修改为Juraj Blaho所示,现在编译好了。您不应该修改代码片段并将解决方案添加到它们中,而应该通过确定答案来解决问题 –

回答

4

您需要在myUnitTest.h中包含myHeaderFile.h。做到这一点后挡:

#ifndef MYTESTCLASS 
#define MYTESTCLASS 1 
#endif 

编辑

由于这并没有帮助那么有可能是与MYTESTCLASS定义的问题。你是否在其他地方加入了myHeaderFile.h?也许你可以尝试在编译器选项中而不是在myUnitTest.h头文件中定义MYTESTCLASS。也许你可以删除#ifdef MYTESTCLASS检查,看看是否是这个问题。