我正在做一个项目,在多次搜索标题中的错误后,我几乎迷路了。如果可以的话,请获得一些帮助来解决这个问题。
class ManagedArray
{
public:
float *elements;
int numberOfElements;
/* default constructor */
ManagedArray() :elements(NULL){};
ManagedArray() :numberOfElements(0){}; <--Where the error is
/*accessor*/
int size() {return numberOfElements; }
float get(int index) {return elements[index]; }
根据 C++ 标准(9.2 类成员)
- ...A member shall not be declared twice in the member-specification, except that a nested class or member class template can be declared and then later defined, and except that an enumeration can be introduced with an opaque-enum-declaration and later redeclared with an enum-specifier.
你声明并定义了两次默认构造函数
ManagedArray() :elements(NULL){};
ManagedArray() :numberOfElements(0){}; <--Where the error is
例如,您可以向第二个构造函数添加一个参数
ManagedArray() :elements(NULL){};
ManagedArray( int n ) :numberOfElements(n){};
或以下方式
explicit ManagedArray( int n ) :numberOfElements(n){};
^^^^^^^^
考虑到数据成员 numberOfElements
最好使用 size_t
类型而不是类型 int
至少因为元素的数量不能为负。
此外,两个构造函数都应初始化所有数据成员。
例如
ManagedArray() :elements(NULL), numberOfElements( 0 ){};
我是一名优秀的程序员,十分优秀!