Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 对struct方法的未定义引用_C++_Class_Templates - Fatal编程技术网

C++ 对struct方法的未定义引用

C++ 对struct方法的未定义引用,c++,class,templates,C++,Class,Templates,我尝试创建一个数组模板类,但当我尝试构建编译器时,未能链接构造函数和方法,我得到: 对`Array::Array()的未定义引用 对`Array::getSize()的未定义引用 以下是头文件: #pragma once template<typename type, int length> struct Array{ public: Array(); int getSize(); private: type data[length]; int

我尝试创建一个数组模板类,但当我尝试构建编译器时,未能链接构造函数和方法,我得到:

对`Array::Array()的未定义引用

对`Array::getSize()的未定义引用

以下是头文件:

#pragma once

template<typename type, int length>

struct Array{
public:
    Array();
    int getSize();

private:
    type data[length];
    int m_length;
};
#pragma一次
模板
结构数组{
公众:
数组();
int getSize();
私人:
类型数据[长度];
int m_长度;
};
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;
}
#包括“Array.h”
模板
数组::数组()
{
m_长度=l;
}
模板
数组::getSize()
{
返回m_长度;
}
主要功能是:

#define LOG(x) cout<<x<<endl
int main()
{
    Array<int, 10> array;
    LOG(array.getSize());
}

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

您需要将实现放入头文件,或者定义用法(模板参数的实例化)在源文件中,这是否回答了您的问题?另外,不要忘记
getSize()
实现中的
int
返回类型(尽管真正的问题在Chris的链接中),这是否回答了您的问题?另外,不要忘记
getSize()
实现中的
int
返回类型(尽管真正的问题在Chris的链接中)哦,好吧,我已经在头文件中直接实现了这些方法,它工作得很好。非常感谢。哦,好吧,我已经在头文件中直接实现了这些方法,效果很好。非常感谢。