Почему я получаю сообщение об ошибке при попытке подобного кода класса? Я начинающий извините - PullRequest
0 голосов
/ 07 мая 2019

Почему я не могу запустить этот код? Все остальные могут заставить его работать .. Я мог бы несколько месяцев назад, но теперь я просто получаю ошибку. Ошибка гласит следующее сообщение об ошибке:

'Животные :: имя' должны быть инициализированы в списке инициализации члена -Werror = effc ++

Я на самом деле зол на LOL ... я тоже новичок, и я просто хочу практиковать.

Я пытался создавать разные примеры кода класса, но никто не работал, когда я включал в него строку или что-то отличное от простой функции cout.

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

class Animals{`public:`string name;`};`

Тогда остальное - это имя объекта класса и т. Д. Например, Animals dog, затем dog.name «name» и затем cout.

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

1 Ответ

0 голосов
/ 07 мая 2019

Я ожидаю, что ваш код будет выглядеть примерно так

#include <string>

class Animal {
public:
    Animal(std::string aName) {
        name = aName;
    }
    std::string name;
};

int main() {
    Animal a("a");
    return 0;
}

Вы инициализируете вашу строку в теле конструктора.Но вы должны использовать список инициализации конструктора:

#include <string>

class Animal {
public:
    Animal(std::string aName): name(aName) {
    }
    std::string name;
};

int main() {
    Animal a("a");
    return 0;
}
...