使用模板时出现"undefined reference to"链接器错误
"undefined reference to" linker error while working with templates
我有一个类Array
template <typename T>
class Array : public SequentialContainer<T>{
public:
Array(Int size){local_vector.reserve(size);}
Array(std::initializer_list<T> initializer_list){
local_vector.assign(initializer_list);
}
virtual Boolean contains(T &object) const;
virtual Boolean contains(Container<T> &container) const;
virtual Int size() const;
virtual T &operator[](Int idx);
virtual T &get(Int idx);
virtual void set(Int idx, const T &object);
virtual Int indexOf(T &object);
virtual Iterator<T> iterator() const;
};
所有方法在Array.cpp文件中都是这样实现的:
template <typename T>
Boolean Array<T>::contains(T &object) const {
//code
}
如果我尝试在main.cpp文件中使用这个Array类:
Array<int> c = {1, 2, 3, 4, 5, 6};
std::cout << c.[4] <<std::endl;
我得到这些链接器错误:
undefined reference to `Array<int>::iterator() const'
undefined reference to `Array<int>::contains(int&) const'
undefined reference to `Array<int>::contains(Container<int>&) const'
etc...
对于Array类的每一个方法。所有文件都在我的cmake文件中,应该进行编译。为什么我得到这个链接器错误?有人能给我解释一下吗?
不能在cpp文件中实现模板方法或类。尝试在标头中执行此操作
相关文章:
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- Visual Studio Code "undefined reference to `WinMain@16'"
- 使用 MATLAB 编码器生成C++代码:编译错误"undefined reference to `rgb2gray_tbb_real64'"
- 为什么创建友元类的实例会导致"undefined reference to"错误?
- Tensorflow c++ api undefined reference to 'tflite::D efaultErrorReporter()'
- 为什么在使用 SDL2 时仍然收到'undefined reference'链接器错误?
- OpenCV undefined reference to 'cv::imread(cv::String const&, int)'
- Libcurl c++ "undefined reference to" (Windows/MinGW/g++)
- 尝试使用 extern "C" 调用 C 中的C++方法,得到"undefined reference to"对象的链接器错误
- build error : undefined reference to `yyFlexLexer::yyFlexLex
- 安卓 NDK 制造。数百"undefined reference error"
- 当我尝试进行TPC-E测试时,实用程序抱怨"undefined reference"
- 声明和定义函数静态会产生"undefined reference to function_name()"
- C++ : "undefined reference to"可能是因为CMake文件
- 包含<iostream>时"Undefined reference"错误
- CMake 'undefined reference' CERN-ROOT 的错误
- 生成错误:"cannot find target for file"和"undefined reference"
- AppData\Local\Temp\cc59LXDc.o:test1.cpp: undefined reference to 'constructNewObjectOfClass
- YAML-cpp 编译错误:"undefined reference to YAML::LoadFile"
- 添加 cpp11 插件时出现错误消息"Undefined reference to boost (...)"