对..的未定义引用..在试图声明数组的嵌套类中

undefined reference to ... in a nested class trying to declare an array?

本文关键字:数组 嵌套 声明 未定义 引用      更新时间:2023-10-16

我正试图在一个名为CLASS_A的类的构造函数内初始化一个称为ARRAY的数组,该数组应该可以由嵌套类CLASS_B访问。我曾想过将数组作为一个模板,但从那时起,语法就变得有点模糊了。

我几乎可以肯定,声明ARRAY静态是解决方案的一部分,并且可能使类型const int成为类似A的模板,因此模板看起来像template <class A, const int D>和声明A ARRAY[SIZE];。无论如何,我最初在编译下面的代码时遇到了这个错误,然后我做了一些更改,得到了一个不同的错误。

这是的链接器错误

nested_class_incomplete_type.cpp|16|undefined reference to `CLASS_A<3>::ARRAY'|
nested_class_incomplete_type.cpp|28|undefined reference to `CLASS_A<3>::ARRAY'|

编辑重复代码。

您只在CLASS_A中声明了ARRAY,您需要定义它:

template <const int D>
int CLASS_A<D>::ARRAY[SIZE] = {};

顺便说一句,你的SIZE字段是多余的,你不需要它,例如:

template <size_t N>
class CLASS_A
{
public:
    static int ARRAY[N];
    //.....
};
template <size_t N>
int CLASS_A<N>::ARRAY[N] = {};