模板中的 C++ 模板

标签 c++ templates

<分区>

Possible Duplicate:
Where and why do I have to put “template” and “typename” on dependent names?

这是我的问题:


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

这给出:

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

如果我将类型名称更改为实际类型,如 int 或 SomeClass,它会起作用:


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

我想要的是这样的:


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

怎么了?我该如何解决?


最佳答案

在 google 上搜索“相关名称”。

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

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

关于模板中的 C++ 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6198649/

相关文章:

c++ - enable_if 结构体定义和默认模板参数

c++ - 多态成员函数指针

c++ - 优先函数

c++ - 如何在 QSqlTableModel 和 Q_OBJECT 之间不发生冲突的情况下构建我的类?

c++ - 非类型模板参数可以实现哪些优化?

javascript - 从 mustache 模板 Moodle 3.7 获取数据

Java 死锁与 Eclipse CDT headless 构建

c++ - 在 C++ 中检查不变量

c++ - 带有常量的可变参数模板

html - 在 render_to_response View 中打开特定选项卡的 Django 代码