После того, как я испортил описание моего предыдущего поста , я сел и попытался передать свое точное намерение.
У меня есть класс с именем P, который выполняет какую-то определенную цель. У меня также есть PW, которая выполняет определенные функции для P. В 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.
Также наличие члена PW с именем a на самом деле не масштабируется - что, если я добавлю (или удалю) другую функцию в P - это нужно будет добавить (или удалить) в PW.