c++ - 模板类数组定义不是类型名称、静态或枚举数 C++

标签 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

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

最佳答案

这个

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/

相关文章:

Java - 将值添加到二维数组以及如何查看数组?

python - "The set of methods, however, is fixed when the class is first defined"是真的吗?

Java:创建 "System"类是一件坏事吗?

c++ - 获取两个数组之间的差异

C++ boost unordered_map - 确定容器中是否存在 key

当类模板 "*"包装在宏中时,C++ 的参数太少

c++ - 使用 ->read() 读取文本并在控制台中显示

C:最大数,输出错误。兰德()

javascript - 基于字符串值的嵌套分组 Angular 6

java - 调用不同类中的函数而不创建该类的新实例