En tu mensaje original dices:
Cita: diccionario.h:198:18: error: invalid use of non-static data member ‘diccionario<std::basic_string<char>, int>::dic’
Así que si pusieras código que pudiera compilarse y que reprodujera ese error sería mejor.
Por otro lado, te comento con flechitas en el código alguna cosa que veo que me parece que no está bien, o que no entiendo para qué está...
Código:
template <typename Key, typename Def>
class diccionario{
public:
typedef pair<Key, Def> entrada;
typedef pair<const Key, Def> value_type;
typedef unsigned int size_type;
class iterator; // -> ¿Para qué está esto?
diccionario( );
class iterator { // ----> declaras el tipo iterator, pero no veo que tengas una variable de ese tipo en la clase
public:
iterator();
private:
iterator (entrada * p);
iterator (typename vector<entrada>::iterator it);
friend class diccionario;
value_type * it_v;
};
private:
friend class iterator; // --> ¿por qué tiene que ser friend una clase incluída?
vector<entrada> dic; // vector que almacena los elementos del diccionario
};
Pero bueno, si pusieras algo para compilar y ver dónde pasa lo que pasa, por ahí me llueve una idea.