Templates 在模板(非成员)函数中使用模板类中的typedefs
以下代码无法编译(无论如何,在Linux上使用gcc 4.2.1):Templates 在模板(非成员)函数中使用模板类中的typedefs,templates,typedef,typename,function-templates,class-template,Templates,Typedef,Typename,Function Templates,Class Template,以下代码无法编译(无论如何,在Linux上使用gcc 4.2.1): 模板 福班 { 公众: typedef int FooType; }; 无效的 普通() { Foo::FooType bar=0; } 模板 无效的 模板化() { Foo::FooType bar=T(0); } int main(int argc,字符**argv) { 返回0; } 这一行的问题在于: Foo< T >::FooType bar = 0; Foo::FooType bar=0;
模板
福班
{
公众:
typedef int FooType;
};
无效的
普通()
{
Foo::FooType bar=0;
}
模板
无效的
模板化()
{
Foo::FooType bar=T(0);
}
int main(int argc,字符**argv)
{
返回0;
}
这一行的问题在于:
Foo< T >::FooType bar = 0;
Foo::FooType bar=0;
…编译器提出了以下投诉:
foo.c:在函数“void templated()”中:
foo.c:22:错误:应为`;'在“酒吧”之前
通常,当一个类型没有被声明时,人们会看到这种情况,但据我所知,Foo
typename
:
typename Foo< T >::FooType bar = 0;
typename Foo::FooType bar=0;
请参阅以了解为什么需要typename
typename Foo< T >::FooType bar = 0;