C++ ссылки на указатели
У меня есть метод, с вот такой сигнатурой: void push(Object*& object);
Я пытаюсь его вызвать вот так:
RelaxString* data = new RelaxString("Lol");
s.push(data);
s1.push(data);
RelaxString - это наследник класса Object
Но VisualStudio говорит следующее: 
Как мне решить эту проблему? Мне надо чтобы указатель принимался по ссылке, то есть чтобы я мог изменять адрес, на который он указывает.
Ответы (1 шт):
Ссылка на указатель на Object не может ссылаться на указатель на RelaxString. Так как типы указатель на Object и указатель на RelaxString никак не связаны. Соответственно необходимо сначала создать указатель на базовый класс:
RelaxString * p_data{new RelaxString("Lol")};
Object * p_object{static_cast<Object *>(p_data)};
s.push(p_object);
Вообще говоря, передача указателя по ссылке в С++ может намекать на то, что вы делаете что-то не так. Особенно когда метод называется push.