Я выполнял свое задание, и это почти закончилось, когда я столкнулся с этой проблемой.
Я создал массив данных и позволил пользователю взаимодействовать с ним.
Mammal* mammal[3] = { new Dog("Puppy",Blue,"Cindy"), new Cat("Kitty",Black,"Wai"), new Lion("Simba",Brown,"Ryo")};
Давайте просто воспользуемся одним членом.
new Dog("Puppy",Blue,"Cindy")
У меня есть заголовокСекция кода написана следующим образом:
using namespace std;
enum COLOR { Green, Blue, White, Black, Brown };
class Animal {
private:
string _name;
COLOR _color;
public:
Animal(string n, COLOR c);
virtual void speak() = 0;
virtual void move() = 0;
virtual void eat() = 0;
};
class Mammal :public Animal {
public:
Mammal(string n, COLOR c);
void speak();
void move();
void eat();
};
class Dog : public Mammal {
private:
string _owner;
public:
Dog(string n, COLOR c, string o);
~Dog();
void speak() override;
void move() override;
};
В файле cpp я создал несколько кодов для speak () и move () для переопределения суперкласса.
Dog::Dog(string n, COLOR c, string o) : Mammal(n, c), _owner(o) {}
Dog::~Dog()
{
}
void Dog::speak() {
cout << "Woof" << endl;
}
void Dog::move() {
cout << "Dog is moving" << endl;
}
Я ожидалошибок нет, но я получил эту ошибку.
E0289 ни один экземпляр конструктора "Dog :: Dog" не соответствует типам аргументов списка аргументов: (const char [6], color, const char [6])
Все это было написано с использованием VS2019. Я что-то пропустил?