Attualmente ho una configurazione del modello di albero binario in cui il mio principale lo utilizza con le stringhe per creare un gioco di domande / risposte. Sto usando una knowledge base che funge da interfaccia per l'albero binario che utilizza principalmente (main non ha accesso al nodo o classi di alberi binari). Il mio codice sembra funzionare bene inserendo / riorganizzando i nodi come necessario, ma penso che il mio design sia piuttosto cattivo.
Solitamente è meglio mettere semplicemente le classi Node e BinaryTree nello stesso file dato che nessuno dei due è utile in modo indipendente? O è addirittura standard quando si usano alberi binari per rendere il nodo una classe nidificata all'interno della classe dell'albero?
Non sei sicuro di come non usare l'amica di classe (supponendo che si tratti di una cattiva progettazione) a meno che non elimini semplicemente la base di conoscenza. Senza la knowledge base che è in grado di vedere i membri del nodo privato, non sarebbe in grado di spostare il puntatore del nodo "corrente" attorno all'albero attraverso domande / ipotesi a meno che non abbia passato il puntatore corrente facendo riferimento a una funzione ad albero binaria che lo spostava ogni volta.
Anche con questo setup l'albero binario in realtà non fa nulla se non fornire un nodo radice dato che k base sta gestendo l'inserimento / riorganizzazione / differenziazione tra domande e ipotesi, quindi non sono sicuro di come spostare qualche traversata, ecc. funzionalità da kbase a btree senza solo creare una serie di funzioni di kbase che chiamano le loro controparti btree.
Esiste un modo per usare std :: swap in ogni file (nodo / albero / base) anche senza inquinare con l'intestazione dell'utilità? Questo design sembra cattivo OO-saggio, ogni aiuto è apprezzato.