2011-07-19 37 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檢查,看看是否是這個問題。