Ошибка: для класса не существует конструктора по умолчанию - PullRequest
0 голосов
/ 21 января 2019

У меня есть класс, производный от базового класса, и набор конструкторов для каждого класса, но я продолжаю получать сообщение об ошибке, что у меня нет конструктора для базового класса.

class Dog
    {
    protected:
    string name;
    int age;

    public:

    Dog(string dogsName, int dogsAge)
    {
        name = dogsName;
        age = dogsAge;
    }

    virtual void Bark()
    {
        cout << "Woof Woof I am a dog" << endl;
    }


class Huey: public Dog
{
public:

    Huey()
    {
        name = "goodboy";
        age = 13;
    }

     void Bark()
    {
    cout << "woof" << endl;
    }
}

Здесь я получаю сообщение об ошибке в Huey (), где говорится, что «для Dog нет конструктора по умолчанию». Но я думаю, что я создал конструктор для класса Dog. Не могли бы вы объяснить, почему этот код неправильный?

Ответы [ 3 ]

0 голосов
/ 21 января 2019

Вам нужно создать конструктор без параметров и без реализации. Как показано ниже:

 public:
    Dog() = default;
0 голосов
/ 21 января 2019

Два способа: 1) иметь конструктор по умолчанию без параметров.2) вызвать существующего конструктора в Dog из Huey (это правильно в вашем случае, поскольку Huey - это Dog в конце концов).В настоящее время Хьюи вызывает конструктор Dog по умолчанию, поскольку он не определен и явно вызван.

0 голосов
/ 21 января 2019

Когда вы указываете какой-либо собственный конструктор, конструктор по умолчанию больше не создается.Тем не менее, вы можете просто добавить его обратно.

class Dog
    {
    protected:
    string name;
    int age;

    public:

    Dog() = default;

    Dog(string dogsName, int dogsAge)
    {
        name = dogsName;
        age = dogsAge;
    }

    virtual void Bark()
    {
        cout << "Woof Woof I am a dog" << endl;
    }
};

class Huey: public Dog
{
public:

    Huey()
    {
        name = "goodboy";
        age = 13;
    }

     void Bark()
    {
    cout << "woof" << endl;
    }
};

РЕДАКТИРОВАТЬ: кажется, что вы хотите вызвать свой пользовательский конструктор Dog из Huey.Это сделано так

1007 *
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...