Не понимаю, как правильно написать конструктор в C++

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

Пишу код про клетки в зоопарке, пытаюсь сделать информацию по клетке (кто в ней). Обращаюсь к классу Animal, но пишет, что переменная Cage::animal не инициализирована. Думаю, что нужно прописать конструктор, но в голову даже не приходит как. Внизу два кода: 1 - класс, где нужно прописать конструктор; 2 - класс, к которому я обращаюсь.

#include "Animal.h"
class Cage
{
    Animal *animal;
public:

    Cage(); // <-- вот этот конструктор я не понимаю как расписать

    void Cage_(Animal *a)
    {
        *animal = *a;
    }
class Animal
{
protected:
    string t;
    string s;
    string v;
public:
    Animal()
    {
        t = "n";
        s = "n";
        v = "n";
    }
    virtual void type() = 0;
    virtual void species() = 0;
    virtual void voice() = 0;

    void information()
    {
    }

};

Ответы (1 шт):

Автор решения: Harry

Было бы можно просто

Cage(Animal *a)
{
    *animal = *a;
}

если бы это работало. У вас animal — неинициализированный указатель, указывает не пойми куда, и туда вы хотите записать ваши данные (как я понимаю, скопировать их из a).

Но это так не работает... Либо храните просто указатель, либо выделите сначала память для вашего зверя (в вашем случае, впрочем, это не сработает — из-за абстрактности класса Animal).

И еще — шаблоны тут в полной мере ни при чем, эту метку я удаляю...

→ Ссылка