Не понимаю, как правильно написать конструктор в 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 шт):
Было бы можно просто
Cage(Animal *a)
{
*animal = *a;
}
если бы это работало. У вас animal — неинициализированный указатель, указывает не пойми куда, и туда вы хотите записать ваши данные (как я понимаю, скопировать их из a).
Но это так не работает... Либо храните просто указатель, либо выделите сначала память для вашего зверя (в вашем случае, впрочем, это не сработает — из-за абстрактности класса Animal).
И еще — шаблоны тут в полной мере ни при чем, эту метку я удаляю...