seb*_*b6k 7 c++ containers templates stl
我想在模板类方法中使用迭代器.这是我的代码:(testclass.h)
template<typename T, typename container>
class TestClassX
{
public:
void gen(typename container::iterator first );
};
Run Code Online (Sandbox Code Playgroud)
和文件testclass.cpp:
template<typename T, typename container>
void TestClassX<T, container>::gen(typename container::iterator first)
{
}
Run Code Online (Sandbox Code Playgroud)
当我尝试运行它时:
TestClassX<unsigned, std::vector<unsigned> > testx;
testx.gen(it);
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
Error:undefined reference to `TestClassX<unsigned int, std::vector<unsigned int, std::allocator<unsigned int> > >::gen(__gnu_cxx::__normal_iterator<unsigned int*, std::vector<unsigned int, std::allocator<unsigned int> > >)'
Run Code Online (Sandbox Code Playgroud)
我用的是mingw32 4.4
我想有一个类可以写入不同的容器,如std :: vector,std :: list,QVector或QList都有STL样式的迭代器.
mfo*_*ini 10
必须在头文件中定义模板类方法.当您使用模板类时,编译器实际上为给定的模板参数编译该类的版本.因此,要求在包括头文件时每种方法的主体都可用.
删除源文件并将主体包含在testclass.h中:
template<typename T, typename container>
class TestClassX
{
public:
void gen(typename container::iterator first ) {
}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4671 次 |
| 最近记录: |