对结构方法的未定义引用[重复]
Posted
技术标签:
【中文标题】对结构方法的未定义引用[重复]【英文标题】:Undefined reference to struct method [duplicate] 【发布时间】:2020-01-27 15:56:11 【问题描述】:我尝试创建一个 Array 模板类,但是当我尝试构建编译器时,无法链接构造函数和方法,我得到:
对 `Array::Array() 的未定义引用
对 `Array::getSize() 的未定义引用
这是头文件:
#pragma once
template<typename type, int length>
struct Array
public:
Array();
int getSize();
private:
type data[length];
int m_length;
;
Array.cpp 文件:
#include "Array.h"
template<typename t, int l>
Array<t, l>::Array()
m_length = l;
template<typename type, int length>
Array<type, length>::getSize()
return m_length;
以及主要功能:
#define LOG(x) cout<<x<<endl
int main()
Array<int, 10> array;
LOG(array.getSize());
如果有人知道我为什么会得到这个,我将不胜感激。
【问题讨论】:
这能回答你的问题吗? Why can templates only be implemented in the header file? 另外,不要忘记int
实现中的 int
返回类型(尽管真正的问题在 Chris 的链接中)
【参考方案1】:
您需要将您的实现放入头文件中,或者在源文件中定义用法(模板参数的实例化)
【讨论】:
哦,好吧,我已经直接在头文件中实现了这些方法,它工作得很好。谢谢!以上是关于对结构方法的未定义引用[重复]的主要内容,如果未能解决你的问题,请参考以下文章
对`__glewCreateShader`的未定义引用[重复]