Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Templates 在模板(非成员)函数中使用模板类中的typedefs_Templates_Typedef_Typename_Function Templates_Class Template - Fatal编程技术网

Templates 在模板(非成员)函数中使用模板类中的typedefs

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;

以下代码无法编译(无论如何,在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;
…编译器提出了以下投诉:

foo.c:在函数“void templated()”中:

foo.c:22:错误:应为`;'在“酒吧”之前


通常,当一个类型没有被声明时,人们会看到这种情况,但据我所知,Foo::FooType应该在templated()中完全有效。

使用
typename

  typename Foo< T >::FooType bar = 0;
typename Foo::FooType bar=0;
请参阅以了解为什么需要typename

  typename Foo< T >::FooType bar = 0;