Mi chiedo se sia possibile inoltrare automaticamente una chiamata di metodo a un oggetto incorporato, senza ereditarietà. Ad esempio:C++ Chiamate di metodo per incorporare l'oggetto senza ereditarietà
class embed
{
public:
void embed_method() {return};
};
class container
{
public:
void container_method() {return;}
private:
embed obj;
};
int main()
{
container object;
object.container_method(); // Local method call
object.embed_method(); // 'Forward' call, obviously doesn't work
}
Potrebbe essere molto utile quando l'ereditarietà da una classe di base non è possibile/non consigliata. Attualmente, l'unica scelta possibile è di riscrivere manualmente i metodi di classe embed
nella classe container
e quindi chiamare i metodi embed
da container
. Anche se il processo può essere copiato, è ancora fastidioso e sembra essere una cattiva soluzione.
È possibile che 'container' si comporti come un puntatore intelligente e sovraccarichi gli operatori applicabili (->, *) –
http://stackoverflow.com/a/13885092/1147772 potrebbe essere d'aiuto. Anche l'ereditarietà privata è fuori discussione? – Drax
@Drax si, anche fuori questione. – Pl4nk