2

我正在通过固定大小的数组制作 List 类。我想ARRAY_SIZE在类中声明为静态 const 数据成员,因此我的类是自包含的,而且我可以在同一个类的数组声明中将它用作数组的大小。但是我收到错误消息“数组绑定不是']'之前的整数常量”

我知道我可以将该语句用作全局变量,例如 const int LIST_SIZE = 5 ;

但我想让它成为一个类的静态 const 数据成员。

class List
{
public :
    List() ; //createList
    void insert(int x , int listIndex) ;
    void removeIndex(int listIndex) ; //index based remove
    void removeValue(int listValue) ; //value based remove
    void removeAll() ;
    int find(int x) ;
    void copy(List *listToCopy) ;
    void update(int x , int index) ;
    bool isEmpty() ;
    bool isFull() ;
    int get(int index) ;
    int sizeOfList() ;
    void printList() ;

private :
    //int translate ( int position ) ;
    static const int LIST_SIZE ;
    int items[LIST_SIZE] ;
    int current ;
    int size ;
} ;
//********** END OF DECLARATION OF LIST CLASS **********//

//Definition of static data member of LIST
const int List::LIST_SIZE = 5 ;
4

1 回答 1

0

错误消息是不言自明的。在 C++ 语言中,普通原始数组或 a 的大小std::array必须是(编译时或constexpr常量。修改const器只是您向编译器做出的一个承诺,即该值永远不会改变,但在只有真正的常量可以使用的情况下使变量可用是不够的。

中的魔术词constexpr

    ...
    static const constexpr int LIST_SIZE = 5;
    int items[LIST_SIZE];
    int current;
    int size;
};
//********** END OF DECLARATION OF LIST CLASS **********//

//Definition of static data member of LIST
const int List::LIST_SIZE;
于 2021-10-11T06:31:37.677 回答