C ++头文件包含错误

时间:2011-07-19 06:14:42

标签: c++

我有一个标题“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来自库,因此我无法更改此头文件。

谢谢!

1 个答案:

答案 0 :(得分:4)

您需要在myHeaderFile.h中加入myUnitTest.h。在阻止后执行此操作:

#ifndef MYTESTCLASS
#define MYTESTCLASS  1
#endif

修改

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