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
,更不用说询问如何使用它了。