これに関する以前の投稿の説明を台無しにした後、私は座って、私の正確な意図を伝えようとしました。
私はいくつかの明確な目的を実行するPと呼ばれるクラスを持っています。また、Pで明確な目的を実行するPWもあります。PWにはメンバー変数はなく、メンバー関数のみがあります。
この説明から、コードは次のようになると想定します。
class P
{
public:
void a( );
};
class PW
{
public:
PW( const P& p ) : p( p ) { }
void b( );
P& p;
};
class C
{
public:
P GetP( ) const { return p; }
private:
P p;
};
// ...
PW& p = c.GetP( ); // valid
// ...
しかし、それは問題を引き起こします。どこでも間接参照なしでPの関数を呼び出すことはできません。
// ...
p->p->a( )
// ...
私がやりたいのは、p-> a()を呼び出して、Pのメンバー関数を呼び出したいと自動的に判断するようにすることです。
また、aと呼ばれるPWのメンバーを持っていることは、実際にはスケーリングしません-Pに別の関数を追加(または削除)した場合はどうなりますか-これはPWに追加(または削除)する必要があります。