gpt4 book ai didi

c++ - 对类模板成员函数的 undefined reference

转载 作者:可可西里 更新时间:2023-11-01 18:26:46 26 4
gpt4 key购买 nike

我想在模板类方法中使用迭代器。这是我的代码:(testclass.h)

template<typename T, typename container>
class TestClassX
{
public:
void gen(typename container::iterator first );
};

和文件testclass.cpp:

template<typename T, typename container>
void TestClassX<T, container>::gen(typename container::iterator first)
{

}

当我尝试运行它时:

TestClassX<unsigned, std::vector<unsigned> > testx;
testx.gen(it);

我得到一个错误:

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> > >)'

我用的是mingw32 4.4

我想要一个可以写入不同容器的类,例如 std::vector、std::list、QVector 或 QList,它们都具有 STL 样式的迭代器。

最佳答案

模板类方法必须在头文件中定义。当您使用模板类时,编译器实际上会为给定的模板参数编译该类的一个版本。因此,在包含头文件时,要求每个方法的主体都是可用的。

删除源文件并将正文包含在 testclass.h 中:

template<typename T, typename container>
class TestClassX
{
public:
void gen(typename container::iterator first ) {

}
};

关于c++ - 对类模板成员函数的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9352216/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com