【问题标题】: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());
}

如果有人知道我为什么会得到这个,我将不胜感激。

【问题讨论】:

标签: c++ class templates


【解决方案1】:

您需要将您的实现放入头文件中,或者在源文件中定义用法(模板参数的实例化)

【讨论】:

  • 哦,好吧,我已经直接在头文件中实现了这些方法,它工作得很好。谢谢!
猜你喜欢
  • 1970-01-01
  • 2013-02-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-27
  • 2013-06-20
  • 2012-02-05
  • 2014-12-27
  • 2012-11-15
相关资源
最近更新 更多