我是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是参数,对吗?
谢谢您的帮助。

最佳答案

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

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
{
}

关于c++ - ClienteBase.h:33:7:注意:候选人期望2个参数,提供0个,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29447979/

10-09 22:21