我正在研究一个项目,在多次搜索标题中的错误后,我几乎迷失了。如果我可以请一些帮助解决这个问题。
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]; }
答案 0 :(得分:0)
根据C ++标准(9.2级成员)
- ... 成员规范中不得声明成员两次,但嵌套类或成员类除外 模板可以声明然后定义,除了一个 可以使用opaque-enum-declaration和。引入枚举 后来用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){};
^^^^^^^^
考虑到最好不要键入int
,而是将数据size_t
用于数据成员numberOfElements
,至少因为元素数量不能为负数。
两个构造函数也应初始化所有数据成员。
例如
ManagedArray() :elements(NULL), numberOfElements( 0 ){};