0

我正在尝试在一个名为ARRAY的类的构造函数中初始化一个名为的数组CLASS_A,并且该数组应该可以被嵌套类访问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'|

编辑重复代码。

4

1 回答 1

2

您只在 中声明ARRAYCLASS_A您需要定义它:

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] = {};
于 2013-07-30T03:30:16.823 回答