模板类数组定义不是类型名称,静态或枚举器C ++

时间:2014-11-12 10:48:05

标签: c++ arrays class templates

我正在编写一个模板类来充当动态数组,我在一个问题上遇到了麻烦,无法弄清楚是什么问题。我已经搞砸了它并且只提出了一个类似的问题,通过添加类名和变量大小来解决这个问题,但仍然得到这两个问题。这是代码

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

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

1 个答案:

答案 0 :(得分:1)

这个

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

应该是

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

因为只允许静态积分在类声明中指定数组大小。