基本クラスから派生したすべてのクラスに特定の API を適用したいと考えています。通常は、純粋に仮想関数を持つ抽象基本クラスを使用してこれを行います。しかし、派生型を返す関数をどのように処理しますか? そのタイプの機能を強制するにはどうすればよいですか?
struct base
{
virtual base func() = 0;
};
struct deriv1 : base
{
deriv1 func();
};
struct deriv2 : base
{
deriv2 func();
};
この例では、「メンバー関数の抽象戻り値の型が無効です」のようなエラーが発生します。ポインターを返すことを提案するいくつかの回答を見てきましたが、そのために動的メモリに浸りたくはありません。割り当てられたすべてのポインターを追跡することは、特別な種類の地獄になります。何か案は?