2011-10-12 54 views
-3
typedef char TCHAR; 

template <class T> class MyTemplateString 
{ 

}; 
template <class T> class MyList 
{ 

}; 
typedef MyTemplateString<TCHAR>   MyString; 

MyList<MyString> outlist;// here it's showing compile time error 

的錯誤是:C++模板工作GCC罰款,但顯示LLVM-GCC編譯器編譯時錯誤

Implicit instantiation of undefined template MyList <MyTemplateString<char>>

做工精細,只有GCC編譯器,但在LLVM-GCC編譯器不能正常工作。

+1

您需要分號後的分號。 –

+4

我非常確定,原來的代碼不會在任何地方編譯,因爲MyString根本沒有定義。請顯示真實的代碼,這不僅僅是你認爲重要的解釋。 – PlasmaHH

+2

-1;請發佈* actual *,編譯代碼。以上不在GCC中編譯。 –

回答

3

如上面貼的代碼在這裏編譯罰款沒有任何錯誤或使用警告兩者G ++和LLVM-G ++:

$ g++ -Wall -c template.cpp 

$ llvm-g++ -Wall -c template.cpp 

版本信息:

$ g++ -v 
Using built-in specs. 
Target: i686-apple-darwin10 
Configured with: /var/tmp/gcc/gcc-5666.3~123/src/configure --disable-checking --enable-werror --prefix=/usr --mandir=/share/man --enable-languages=c,objc,c++,obj-c++ --program-transform-name=/^[cg][^.-]*$/s/$/-4.2/ --with-slibdir=/usr/lib --build=i686-apple-darwin10 --program-prefix=i686-apple-darwin10- --host=x86_64-apple-darwin10 --target=i686-apple-darwin10 --with-gxx-include-dir=/include/c++/4.2.1 
Thread model: posix 
gcc version 4.2.1 (Apple Inc. build 5666) (dot 3) 

$ llvm-g++ -v 
Using built-in specs. 
Target: i686-apple-darwin10 
Configured with: /var/tmp/llvmgcc42/llvmgcc42-2335.9~9/src/configure --disable-checking --enable-werror --prefix=/Developer/usr/llvm-gcc-4.2 --mandir=/share/man --enable-languages=c,objc,c++,obj-c++ --program-prefix=llvm- --program-transform-name=/^[cg][^.-]*$/s/$/-4.2/ --with-slibdir=/usr/lib --build=i686-apple-darwin10 --enable-llvm=/var/tmp/llvmgcc42/llvmgcc42-2335.9~9/dst-llvmCore/Developer/usr/local --program-prefix=i686-apple-darwin10- --host=x86_64-apple-darwin10 --target=i686-apple-darwin10 --with-gxx-include-dir=/usr/include/c++/4.2.1 
Thread model: posix 
gcc version 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.9) 

我的猜測是,你真正問題在於別處。

+0

我使用XCode 4,並且在他們沒有GCC編譯器的選項,所以我正在編譯LLVM-GCC並且錯誤即將到來,但是當我使用GCC編譯器在XCode 3中編譯相同的代碼時,它完美地編譯。有沒有任何設置問題可能導致問題? – UPT

+0

您可以在Xcode 4項目設置中指定編譯器,但首先您可以按照上述我的回答(請注意,上述兩種情況均使用Xcode 4.0中的相關編譯器)嘗試編譯來自命令行的代碼示例。 –