Quello che stai facendo male qui a livello di lingua sta sovraccaricando gli operatori per i puntatori. Almeno un argomento di un operatore sovraccarico deve essere di un tipo definito dall'utente o un riferimento a uno.
Ma lo stai facendo anche a un altro livello. Stai restituendo un puntatore, il che significa che probabilmente dovrai allocare un po 'di spazio dinamicamente nell'operatore. Bene, chi possiede quel magazzino? Chi lo pubblicherà?
Si dovrebbe solo prendere i riferimenti e restituire per valore, qualcosa di simile a:
template <typename T>
Point<T> operator +(Point<T> const& point, Vector<T> const& vector) {
return Point<T>(point.x + vector.x, point.y + vector.y);
}
fonte
2011-09-21 02:35:30
Uno dei motivi per cui sto restituendo un puntatore è che non sono riuscito a capire come restituire in base al valore. Da dove otterrei questo punto? Non riesco a crearne uno nuovo() e restituirlo in questo modo. –
@Doug: ho aggiunto un esempio, considerando le tipiche classi Point e Vector. Se vieni da Java, la prima cosa che devi imparare è che 'new' deve essere usato molto frequentemente. –
Che tipo di allocazione ha questo? È in qualche modo collegato alla funzione di chiamata? –