C++ C+中的可比数据数组+;
我的代码中出现以下错误。我对C++很生疏,不知道我做错了什么。< /P> 错误消息: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
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;