Допустим, у нас есть абстрактный базовый класс IBase
с чистыми виртуальными методами (интерфейс).
Затем мы выводим CFoo
, CFoo2
из базового класса.
И у нас есть функция, которая знает, как работать с IBase.
Foo(IBase *input);
Обычный сценарий в этих случаях выглядит следующим образом:
IBase *ptr = static_cast<IBase*>(new CFoo("abc"));
Foo(ptr);
delete ptr;
Но управления указателями лучше избегать, поэтому есть ли способ использовать ссылки в таком сценарии?
CFoo inst("abc");
Foo(inst);
где Foo
is:
Foo(IBase &input);