Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C+中的可比数据数组+;_C++_Arrays_Comparable - Fatal编程技术网

C++ C+中的可比数据数组+;

C++ C+中的可比数据数组+;,c++,arrays,comparable,C++,Arrays,Comparable,我的代码中出现以下错误。我对C++很生疏,不知道我做错了什么。< /P> 错误消息: Error: Field has incompatible type 'int []' 代码: 模板类OrderedCollection { 私人: 可比较数据[];//此行导致的错误 内部尺寸; int_电流; const int MAX_SIZE=100; 您需要指定const数组大小,数组大小必须在编译时已知 像这样的事情应该可以解决: Comparable data[MAX

我的代码中出现以下错误。我对C++很生疏,不知道我做错了什么。< /P> 错误消息:

Error: Field has incompatible type 'int []'   
代码:

模板类OrderedCollection
{         
私人:
可比较数据[];//此行导致的错误
内部尺寸;
int_电流;
const int MAX_SIZE=100;

您需要指定
const
数组大小,数组大小必须在编译时已知

像这样的事情应该可以解决:

  Comparable data[MAX_SIZE]; 

一个可能的修复方法是使用第二个接受大小的模板参数

template<typename Comparable, size_t MAX_SIZE = 100> class OrderedCollection
    {

    private:
        Comparable data[MAX_SIZE];  //Error should be gone
        int _size;
        int _current;
模板类OrderedCollection
{
私人:
可比较数据[MAX_SIZE];//错误应该消失
内部尺寸;
int_电流;

这是正确的,因为C++不支持可变长度数组(VLA),Q中的代码通常使用VLA的编译器扩展来编译(除非OP使用<代码> -PoANTICTIC/<代码>)。'所以这可能不是错误的原因。另外,在不知道OP实现中
数据的上下文和用途的情况下,建议使用
std::vector
是不可取的。@Alok:类中真的有VLA吗?一种“可变长度结构”编译器扩展甚至无法工作,未调整大小的数组必须是最后一个成员。@Alok:
-pedantic
错误似乎表明
[]
被解释为
[0]
,可能这只是因为
-pedantic
。但我不知道在创建实例时如何设置该成员的大小,所以VLA从何处获取其大小?是否有一些特殊的构造函数/初始值设定项语法或其他东西?谢谢大家。这修复了它。神奇的数字不好。请使用
std::vector
Instead@bames53:你误用了“幻数”这个术语,但你是对的,
向量通常比固定大小的容器更受欢迎。
template<typename Comparable, size_t MAX_SIZE = 100> class OrderedCollection
    {

    private:
        Comparable data[MAX_SIZE];  //Error should be gone
        int _size;
        int _current;