我有一个标题“myHeaderFile.h”文件,如下所示,它由release exe和unit test exe使用。
#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 :(得分:4)
您需要在myHeaderFile.h
中加入myUnitTest.h
。在阻止后执行此操作:
#ifndef MYTESTCLASS
#define MYTESTCLASS 1
#endif
修改强>
由于这没有帮助,因此MYTESTCLASS
定义可能存在问题。你在其他地方加入了myHeaderFile.h
吗?也许您可以尝试在编译器选项中定义MYTESTCLASS
而不是在myUnitTest.h
头文件中。也许你可以删除#ifdef MYTESTCLASS
检查,看看是不是问题。