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
Ora voglio definire un opertore globale + di questo tipo: n+i dove n è un intero e i è un iteratore, metto in fondo questo:codice: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 }
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:codice:template<typename T,typename Functor> typename DVector<T,Functor>::iterator &operator+(const int &n,const typename DVector<T,Functor>::iterator &ma){ return ma+n; }
questo da errore:codice:DVector<int,isMoreOperator> a; //lasciate perdere a cosa serve il funtore "isMoreOperator", non è il nostro problema 3+a.begin();
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?

Rispondi quotando