我正在编写一个用作动态数组的模板类,但我遇到了一个问题,无法找出问题所在。我仔细检查了它,除了通过添加类名和变量大小解决了一个类似的问题之外什么也没有提出,但仍然得到这两个。这是代码
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];
因为只允许静态积分在类声明中指定数组大小。
关于c++ - 模板类数组定义不是类型名称、静态或枚举数 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26885086/