我有这个类标题
//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)
我在这里做错了什么?
答案 0 :(得分:2)
没有参数的函数仍然需要括号:
Container::Container() {
int y;
}
根据您的标题,您似乎忘记了maxCapacity参数,它实际上应该是:
Container::Container(int maxCapacity) {
int y;
}
(如果你也在询问警告,这很明显 - 你宣布了一个int x
但没有对它做任何事情)
答案 1 :(得分:0)
Container::Container{
int y;
}
在语法上是不正确的。
修改强>
试试这个:
Container::Container(int maxCapacity) // default argument not to be mentioned in the definition
{
int y;
}
答案 2 :(得分:0)
您的Container构造函数(在源文件中)应该是这样的:
Container::Container(int maxCapacity){
// code
}
答案 3 :(得分:0)
Container::Container{
int y;
}
我不确定这是什么意思。如果您正在尝试定义您的ctor,它应该类似于:
Container::Container(int maxCapacity) // ....
请注意,您希望在声明中包含默认值,但在定义中不包含。