Ho cercato di creare alcuni overload dell'operatore (* e +) su una classe che è racchiusa in puntatori intelligenti.Sovraccarico dell'operatore di classe racchiuso tra puntatori intelligenti
auto p = std::make_unique<Polynomial<T>>();
Quando si tenta di sovraccaricarlo utilizzando il normale sovraccarico, richiede ovviamente i tipi di puntatore intelligente.
Modifica, quindi:
std::unique_ptr<Polynomial<T>> operator+(const std::unique_ptr<Polynomial<T>>& right);
template<class T>std::unique_ptr<Polynomial<T>> Polynomial<T>::operator+(const std::unique_ptr<Polynomial<T>>& right) {
//Do stuff
}
E l'errore:
Quindi, come si fa a sovraccaricare gli operatori normali quando la classe è incapsulato in una smart pointer?
"Quando cerco di sovraccaricarlo con una normale sovraccarico, si chiede, ovviamente, per i tipi di puntatore intelligente." -- Che cosa. – Shoe
Perché queste classi sono racchiuse in puntatori intelligenti? Perché non puoi usarli come tipi di valore? –