尝试声明数组的嵌套类中未定义的引用?

时间:2013-07-30 03:25:03

标签: c++ arrays templates nested-class undefined-reference

我正在尝试在名为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'|

编辑重复的代码。

1 个答案:

答案 0 :(得分:2)

您只在ARRAY中声明了CLASS_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] = {};