ClienteBase.h:33:7:注意:候选人需要2个参数,0提供

时间:2015-04-04 15:11:08

标签: c++ object constructor

我是C ++编程的新手,我试图在派生类中实例化一个构造函数。我的基类是ClienteBase:

class ClienteBase: public ClienteComprar{
    protected:
        string nome;
        double saldo;
    public:
        ClienteBase(string n, double s);
        int comprarProduto();
};

我的班级ClienteFisico的构造函数是:

ClienteFisico::ClienteFisico(string n, double s, string c){
    ClienteBase(n, s);
    cpf = c;
}

我不知道问题是什么,但是当我编译它时会给我一个错误,说ClienteBase需要两个参数并且为零,但是n和s是参数,对吧? 谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

您的初始化需要在初始化列表中完成。

Foo::Foo(... agrs ...) : ... initializer list ...
                       ^ // Start of initializer list
{ // Start of constructor body
}

因此你应该这样做

ClienteFisico::ClienteFisico(string n, double s, string c) :
    ClienteBase(n, s), // Now calling parent constructor
    cpf(c) // This isn't required to be here but is preferred over the body
{
}