2011-10-12 39 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中的相关编译器)尝试编译来自命令行的代码示例。 –