c++ - 构造函数错误

标签 c++ class

我有这个类头

//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/

相关文章:

c++ - 具有一般和特殊属性的类

java - 我输入的分数总是返回 0?

java - 继承不允许我创建子类的对象?

Python:将主类传递给其他类是个坏主意吗?

python - (Python)正确的命名法是什么,以便我可以搜索和了解它?

c++ - Crypto++ "Tee"式过滤器

c++ - 如何向 QFileDialog 添加自定义项?

c++ - 字符串插入 C++

c++ - OpenCV 无需压缩/更改即可读取视频/图像

java - 对另一个类中的非静态方法进行静态引用