El error no tiene nada que ver con el miembro de ser privado. Todo el problema se puede simplificar a esta:
Código C++:
Ver originalstruct dicconario {
struct iterator{
iterator();
};
int dic;
};
dicconario::iterator::iterator() {
int i = dic;
}
dic no es miembro estático de diccionario así que tienes que tener un objeto diccionario para acceder a ella. El objeto iterador probablemente debería almacenar un miembro de diccionario*, pasado a cada uno de lo constructores