Código C++:
Ver original
template <typename Key, typename Def> typename diccionario<Key,Def>::const_iterator diccionario<Key,Def>::cbegin() const{ // Llamamos al constructor privado que recibe una referencia del primer valor del diccionario typename diccionario<Key,Def>::const_iterator sal(&dic.at(0)); // Devolvemos el iterador con it_v apuntando al primer valor del dic return sal; } template <typename Key, typename Def> diccionario<Key,Def>::const_iterator::const_iterator(typename diccionario<Key,Def>::entrada * p_e){ it_v = (pair<const Key,Def> *) p_e; // casting para value_type }
Cita:
¿A alguien se le ocurre algo?g++ -o ejecV2 -D DICC_V2 -std=c++0x ejemplo.cpp -Iinclude
In file included from diccionario.h:214:0,
from ejemplo.cpp:4:
diccionarioV2.hxx: In instantiation of ‘diccionario<Key, Def>::const_iterator diccionario<Key, Def>::cbegin() const [with Key = std::basic_string<char>; Def = int]’:
ejemplo.cpp:50:17: required from here
diccionarioV2.hxx:380:3: error: invalid conversion from ‘const value_type* {aka const std::pair<std::basic_string<char>, int>*}’ to ‘diccionario<std::basic_string<char>, int>::entrada* {aka std::pair<std::basic_string<char>, int>*}’ [-fpermissive]
make: *** [dic2] Error 1
In file included from diccionario.h:214:0,
from ejemplo.cpp:4:
diccionarioV2.hxx: In instantiation of ‘diccionario<Key, Def>::const_iterator diccionario<Key, Def>::cbegin() const [with Key = std::basic_string<char>; Def = int]’:
ejemplo.cpp:50:17: required from here
diccionarioV2.hxx:380:3: error: invalid conversion from ‘const value_type* {aka const std::pair<std::basic_string<char>, int>*}’ to ‘diccionario<std::basic_string<char>, int>::entrada* {aka std::pair<std::basic_string<char>, int>*}’ [-fpermissive]
make: *** [dic2] Error 1
Forma parte de un ejercicio y se supone que tengo que hacerlo con esas definiciones..., ¿pero cómo construyo el objeto si el método es constante?