Mi piacerebbe distinguere chiaramente tra punti 3D e 2D nel mio codice. La soluzione ovvia sarebbe quella di avere classi separate.Come proibisco la conversione implicita alla classe base?
D'altra parte le conversioni da punti 3D con z = da 0 a 2D punti sono abbastanza comuni. Pertanto vorrei utilizzare una classe di base comune in modo da poter eseguire tali conversioni sul posto in memoria. Per mantenere distinti i tipi, vorrei vietare la conversione implicita a quella classe base. È fattibile?
Oppure esiste un modo diverso per creare tipi diversi con funzioni simili come questa?
hm, potresti voler dare un'occhiata qui (suggerimento: 'explicit') :-) http://stackoverflow.com/questions/121162/what-does-the-explicit-keyword-in-c-mean – Najzero
Puoi dare un esempio di questa conversione "in-place in memory" di cui stai parlando? a priori, penso che qualsiasi eredità pubblica tra un 2D e un punto 3D sembra innaturale e confusionario. – juanchopanza
Non vedo come una classe base comune dovrebbe consentire comunque di convertire un punto 3D in un punto 2D sul posto. Supponiamo che 'B' sia una base di' 2Dpoint' e '3Dpoint', con le coordinate' x' e 'y' memorizzate in' B'. Supponiamo inoltre di avere un'istanza di '3Dpoint' e di volere un'istanza di' 2Dpoint' senza copiare nulla. Cosa succederà? –