Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.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
C++ C++;模板中的模板_C++_Templates - Fatal编程技术网

C++ C++;模板中的模板

C++ C++;模板中的模板,c++,templates,C++,Templates,可能重复: 我的问题是: template<typename TypeName> class Bubu { ... vector<TypeName>::iterator Foo() { ... } ... } 模板类Bubu { ... 向量::迭代器Foo() { ... } ... } 这使得: 错误C2146:语法错误:缺少“;”在标识符“Foo”之前 如果我将typename更改为实际类型,如int或SomeCl

可能重复:

我的问题是:


template<typename TypeName> class Bubu
{
   ...
   vector<TypeName>::iterator Foo()
   {
      ...
   }
   ...
}

模板类Bubu
{
...
向量::迭代器Foo()
{
...
}
...
}
这使得:

错误C2146:语法错误:缺少“;”在标识符“Foo”之前

如果我将typename更改为实际类型,如int或SomeClass,则它可以工作:


vector<int>::iterator Foo(){}

向量::迭代器Foo(){}
我想要的是:


Bubu<SomeClassType> bubuInstance;
vector<SomeClassType>::iterator it = bubuInstance.Foo();

布布恩斯坦;
向量::迭代器it=bubuInstance.Foo();
怎么了?我怎么修理它


在谷歌上搜索“从属姓名”

无论如何,要修复它,请使用typename:

template<typename TypeName> class Bubu
{
   ...
   typename vector<TypeName>::iterator Foo()
   {
      ...
   }
   ...
}
模板类Bubu
{
...
typename向量::迭代器Foo()
{
...
}
...
}

您需要在“typename”前面加上前缀,并用分号“;”结束您的课程

template<typename TypeName>
class Bubu
{
    typename vector<typename TypeName>::iterator Foo()
    {
    }
};
模板
布布级
{
typename向量::迭代器Foo()
{
}
};

什么?那根本不是复制品。仅仅因为它谈论的是同一件事,并不意味着它天生就是一个复制品。OP甚至不知道什么是
typename
,更不用说询问如何使用它了。