gpt4 book ai didi

c++ - 对结构方法的 undefined reference

转载 作者:行者123 更新时间:2023-12-02 10:36:47 26 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Why can templates only be implemented in the header file?

(17 个回答)


2年前关闭。




我试图制作一个 Array 模板类,但是当我尝试构建编译器时,无法链接构造函数和方法,我得到:

对 `Array::Array() 的 undefined reference

对 `Array::getSize() 的 undefined reference

这是头文件:

#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++ - 对结构方法的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59934613/

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