对结构方法的未定义引用[重复]

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`的未定义引用[重复]

对带有数组的构造函数的未定义引用[重复]

使用类标头对函数的未定义引用[重复]

使用 QT 时对构造函数的未定义引用 [重复]

C ++错误:对“”的未定义引用,并且ld返回了1个退出状态[重复]

C++ 错误:对“<func name>”的未定义引用和 ld 返回 1 个退出状态 [重复]