Sto svolgendo un progetto di un array dinamico di tipo qualunque T,
in dvector.h ho tutte le funnzioni di normale funzionamento del vettore e lì non ci sono problemi
Sempre in dvector.h ho una nested class iterator
template <class T,class Functor> class DVector{
//funzioni e attributi.......
class iterator {
//funzioni della classe iterator
}
iterator begin(){............} //funzione che ritorna l'iteratore che punta al primo dato dell'array
}
Ora voglio definire un opertore globale + di questo tipo: n+i dove n è un intero e i è un iteratore, metto in fondo questo:
template<typename T,typename Functor> typename DVector<T,Functor>::iterator &operator+(const int &n,const typename DVector<T,Functor>::iterator &ma){
return ma+n;
}
lasciando perdere cosa fa ma+n che vi assicuro al 100% che non da errori, questo codice compila perfettamente ma nel momento in cui nel main faccio:
DVector<int,isMoreOperator> a; //lasciate perdere a cosa serve il funtore "isMoreOperator", non è il nostro problema
3+a.begin();
questo da errore:
no match for ‘operator+’ in ‘3 + DVector<T, Functor>::begin() const [with T = int, Functor = isMoreOperator]()’
ovviamente ho incluso il file.h nel main
Avete idea da dove possa provenire questo errore?
Perchè non trova la funzione?