Utilizzo l'ereditarietà privata in un progetto, nel senso "implementato in termini di". La classe base definisce operator [], e questa è la funzionalità che voglio usare. Così, hoereditarietà privata tramite direttiva, sovraccarichi?
class A : private B {
using B::operator[];
// ...
};
Tuttavia, come posso controllare quale versione dell'operatore [] ottengo? In realtà, ho bisogno di più di una, entrambe le versioni const
e non const
. Questo può essere realizzato?
In questo caso è possibile utilizzare la composizione per fornire il risultato desiderato anziché l'ereditarietà privata. – James
Sì, lo so ... l'ho cambiato in ereditarietà privata invece di ridurre la quantità di codice di inoltro. Quindi non è possibile? Come viene scelta la funzione in modo casuale? – carlpett
Il codice sarà molto più facile da scrivere e mantenere se si utilizza la composizione anziché l'ereditarietà privata qui. La regola generale è quella di non utilizzare le funzionalità off-the-wall del C++ quando non sono assolutamente necessarie (da quello che hai detto finora, l'ereditarietà privata non è necessaria in questo caso). –