【问题标题】:Template class array definition is not type name, static or enumerator C++模板类数组定义不是类型名称、静态或枚举器 C++
【发布时间】:2015-01-09 04:39:06
【问题描述】:

我正在编写一个模板类以用作动态数组,但我遇到了一个问题,无法找出问题所在。我已经对它进行了检查,除了通过添加类名和变量大小解决了一个类似的问题之外什么都没有提出,但仍然得到这两个。这是代码

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

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

【问题讨论】:

    标签: c++ arrays class templates


    【解决方案1】:

    这个

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

    应该是

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

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

    【讨论】:

    • 感谢您解决问题。
    猜你喜欢
    • 2013-11-03
    • 1970-01-01
    • 1970-01-01
    • 2016-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-22
    • 2018-11-20
    相关资源
    最近更新 更多