我正在编写一个用作动态数组的模板类,我在一个问题上绊脚石,无法解决问题所在。我已经仔细检查了一下,什么也没想,但是通过添加类名和变量大小解决了一个类似的问题,但仍然得到了这两个问题。这是代码

template<class Val>
class DynamArray
{
private:
    const int kSegmentSize = 15;
    int countPos;
    Val initial[DynamArray::kSegmentSize];
public:
    DynamArray::DynamArray();
    DynamArray::~DynamArray();
    void DynamArray::PutVal(Val value);
    Val DynamArray::GetVal();
};

数组初始名称导致错误修复了我添加的DynamArray::的第一个问题,该错误消失了,但是这个错误仍然存​​在,我不知道这里是否是完整错误的副本。
error C2327: 'DynamArray<std::string>::kSegmentSize' : is not a type name, static, or enumerator

然后我得到
error C2065: 'kSegmentSize' : undeclared identifier

如果有人对此有任何想法,将不胜感激。

最佳答案

这个

const int kSegmentSize = 15;
Val initial[DynamArray::kSegmentSize];

应该
static const int kSegmentSize = 15;
Val initial[kSegmentSize];

因为只有静态积分才可以在类声明中指定数组大小。

09-27 17:21