我有这个类头
//header for class.
#ifndef Container_H
#define Container_H
#include <iostream>
using namespace std;
const int DEFAULT=32;
class Container{
public:
Container(int maxCapacity = DEFAULT);
~Container();
void insert(int item, int index);
void erase(int index);
int size()const;
private:
int sizeC;
int capacityC;
int * elements;
};
void info();
#endif
和这个源文件
#include "container.h"
Container::Container(int maxCapacity = DEFAULT){
int y;
}
void Container::insert(int item, int index){
int x;
}
当我编译它时,我收到以下错误消息
test.cpp:4: error: default argument given for parameter 1 of `Container::Container(int)'
container.h:12: error: after previous specification in `Container::Container(int)
我做错了什么?
最佳答案
没有参数的函数仍然需要括号:
Container::Container() {
int y;
}
根据您的 header ,您似乎只是忘记了 maxCapacity 参数,实际上应该是:
Container::Container(int maxCapacity) {
int y;
}
(如果您也询问警告,这是不言而喻的——您声明了一个 int x
但没有对其执行任何操作)
编辑:那么现在您已经编辑它以完全更改错误。现在这是一个错误,因为您在两个地方都指定了默认参数;你只应该在声明中指定它。在实际实现中将其省略,如我上面的第二个示例
关于c++ - 构造函数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2642927/