У меня есть родовое STRUCTПереопределения в определениях типов C++
template<typename X, typename Y>
struct S
{
};
Тогда есть абстрактный класс, который возвращает указатель на разделяемый выше структуры в чистой виртуальной функции. Одним из производных классов также реализует эту функцию, но должно возвращать указатель на S с различным конкретизированным типом:
typedef boost::shared_pointer<S<double, double>> BPtr;
class BaseClass
{
public:
BPtr Func() = 0;
};
typedef boost::shared_pointer<S<double, std::tuple<double, double>>> Dptr;
class DerivedClass : public BaseClass
{
public:
DPtr Func() {}
}
В идеале я хотел бы иметь возможность вернуть переопределения ЬурейиМ в производном классе, но не может сделать это в C++.
Как исправить эту дилемму?
Похоже, вы пытаетесь набрать функцию. –
Вы можете переопределить (локализовать) typedef, переместив их в класс. Но C++ требует, чтобы виртуальные функции имели одну и ту же подпись, а тип возврата - часть подписи. Каков ваш реальный вопрос? –
Как бы вы использовали эту функцию, указав указатель на BaseClass? –