Я хотел бы создать базовый (абстрактный) класс (назовем его type::base
) с некоторой общей функциональностью и свободным интерфейсом, проблема, с которой я сталкиваюсь, заключается в типе возврата всех этих методов
class base {
public:
base();
virtual ~base();
base& with_foo();
base& with_bar();
protected:
// whatever...
};
Теперь я могу создавать подтипы, например ::1005 *
class my_type : public base {
public:
myType();
// more methods...
};
Проблема возникает при использовании таких подтипов, как этот:
my_type build_my_type()
{
return my_type().with_foo().with_bar();
}
Это не скомпилируется, потому что мы возвращаем base вместо my_type.
Я знаю, что мог бы просто:
my_type build_my_type()
{
my_type ret;
ret.with_foo().with_bar();
return ret;
}
Но я думал о том, как я могу это реализовать, и я не нашел никаких действительных идей, каких-то предложений?