2011-11-08 153 views
-2

我有一個在C++中定義的類。我在.h文件中有一個模板。而這個模板在.cxx文件中定義了幾個本地類。如何擺脫錯誤C3861:?

的a.cxx

#include "a.h" 
namespace test 
{ 
    class abc 
    { 
    }; 
} 
當我編譯這個文件,它編譯罰款

的A.H

namespace test 
{ 
Class a 
{ 
    template<classT> 
    { 
    abc xyz = //some initialization 
    } 
}; 
} 

內容

內容。但是當我嘗試使用我在a.h中定義的模板時。它會引發我跟隨錯誤。

錯誤C3861:「ABC」:未找到

標識符
+1

你爲什麼要在a.cxx中聲明abc?你應該把它放在一個頭文件中,並在使用它的模板之前加載它。 – Rup

+0

爲什麼'class abc'在'a.cxx'中而不在頭文件中?爲什麼文件擴展名是'cxx',而不是'cpp'? –

+1

您需要在代碼行中放置一個大箭頭,該代碼行不會編譯。 –

回答

0

做出這樣ABC類的前向聲明:

namespace test 
{ 

class abc; 

class a 
{ 
    template<classT> 
    { 
    abc xyz = //some initialization 
    } 
}; 
} 
0

好像你錯過了放​​聲明中.h文件。

而你把Class a而不是class a