读书人

C++ 可不可以将一个模板类型传递给vec

发布时间: 2013-09-06 10:17:17 作者: rapoo

C++ 能否将一个模板类型传递给vector<> ?


#include <vector>

using namespace std;

template<typename TAV>
class Container
{
private:
vector<TAV> m_List;
vector<TAV>::iterator m_Itor;
public:
void add(TAV node)
{
m_List.push_back(node);
}
}

int test()
{
Container<int> t;
t.add(1);
}


这样的,为什么编译不通过呢?
[解决办法]
少了个typename
vector<TAV>::iterator m_Itor;

改为
typename vector<TAV>::iterator m_Itor;

[解决办法]
依赖型名字被假定为值,除非前面加上一个typename。
具体意思是说iterator是依赖于参数TAV的,如果不加typename就认为iterator是一个值,而不是类型。

读书人网 >C++

热点推荐