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是一个值,而不是类型。