При этом вы сообщаете компилятору, что не можете неявно преобразовать Line
в Object
:
class Line : protected Object {
};
Но мне кажется, что вы хотите это сделать, а также что вы должны это сделать. Так что сделайте наследство публичным. Это вопрос дизайна.
Не делайте наследство protected
, только чтобы сохранить методы в базовом классе protected
.
Еще один вариант - реализовать оператор приведения в строке:
class Line : protected Object
{
public:
operator Object&();
};
и вызвать функцию следующим образом:
a.Add(Line());
вместо
a.Add(new Line());
Вы не можете неявно использовать указатели в этой ситуации. Однако я предлагаю изменить тип наследования.