c++头文件包含错误

C++ header file inclusion error

本文关键字:错误 文件包 c++      更新时间:2023-10-16

我有一个标题"myHeaderFile.h"文件如下所示,由发布exe和单元测试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来自库,所以我不能改变这个头文件。

谢谢!

您需要在myUnitTest.h中包含myHeaderFile.h。在代码块之后执行:

#ifndef MYTESTCLASS
#define MYTESTCLASS  1
#endif

编辑

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