Ver Mensaje Individual
  #5 (permalink)  
Antiguo 26/11/2014, 16:06
lareto
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: C++ error al acceder a miembro privado desde clase anidada y friend

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.