Ho creato una classe con due metodi get, uno const e uno non-const. Il metodo const è pubblico, quindi gli utenti possono interrogare il vettore. Il metodo non-const è protetto, quindi posso usarlo per modificare i dati di cui ho bisogno.Perché il cast di C++ non viene eseguito su const quando un metodo const è pubblico e quello non const è protetto?
Quando si tenta di utilizzare la classe, tuttavia, e chiamare il metodo get, il compilatore si lamenta che il metodo non-const è protetto. Invece, devo usare const_cast per trasmettere l'oggetto a const, quindi posso ottenere il metodo pubblico.
C'è un modo per risolvere questo? Perché il compilatore non dovrebbe eseguire il cast stesso, poiché esiste un metodo pubblico? Se rimuovo la versione protetta e lascio semplicemente quella const, funziona bene, quindi fa il cast in questa situazione. Il casting su const è sempre sicuro. Sta rimuovendo la costanza che è un problema.