Здравствуйте столкнулся с runtime ошибкой которая говорит следущее:
Вызвано исключение по адресу 0x007C3AD9 в home_oop_inheritance_virtual_metod_spd_animal.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0x00000000.
Код в котором появляется ошибка:
void printAll(){
for (size_t i = 0; i < zoo.size() + 1; i++)
{
zoo[i]->show();// ошибку выдает здесь
cout << endl;
}
}
Код родительского класса:
class Animal
{
protected:
string name = "NoName";
size_t age = 1;
public:
Animal(const string& name, const size_t& age)
:name(name), age(age) {}
Animal() = default;
virtual void sound() const = 0;
virtual void type() const = 0;
virtual void show() const = 0;
string getName() {
return this->name;
}
size_t getAge() {
return this->age;
}
void setName(const string& newName) {
if (newName != "")
{
name = newName;
return;
}
return;
}
void setAge(const size_t newAge) {
if (newAge >= 0)
{
age = newAge;
return;
}
return;
}
};
Это код на котором я только изучаю наследование в С++ так-что не судите строго если там есть ошибки. Буду благодарен за любую помощь.
P.S. Я решил немного изменить метод вывода.
for (size_t i = 0; i < zoo.size() - 1; i++)
{
zoo[i]->type();
cout << " Name: " << zoo[i]->getName() << " Age: " << zoo[i]->getAge() << " ";
zoo[i]->sound();
cout << endl;
}
P.S.(2) в меом случае zoo это vector