Bueno, este es mi problemilla... Yo tengo un set (de objetos Produccion). Produccion a su vez, tiene un vector de objetos semiProduccion... El problema me viene al intentar añadir una semiProduccion a una producción del set...
Es decir, yo tengo algo tal que:
set <Produccion>::iterator it;
For (it = miset.begin(); it != miset.end(); it++)
if (loquesea)
(*it).insertarsemi (algo) //suponiento 'algo' una semiproduccion que ya he definido
La declaracion (e implementacion) de InsertarSemi es:
void InsertarSemi (SemiProduccion &S)const{PDerecha.push_back(S);}
Pues, por mucho const que le ponga, le quite o me invente, siempre da error de compilacion... Si no tengo const (ni &) por ningun sitio me sale:
error: no se encuentra una función coincidente para la llamada a ‘Produccion::InsertarSemi(SemiProduccion&) const’
Produccion.h:14: nota: los candidatos son: void Produccion::InsertarSemi(SemiProduccion) <coincidencia cercana>
Y tal y como lo tengo ahora, que sigue la forma "‘Produccion::InsertarSemi(SemiProduccion&) const’" que me pide el compilador, me sale que:
error: no se encuentra una función coincidente para la llamada a ‘std::vector<SemiProduccion, std::allocator<SemiProduccion> >::push_back(SemiProduccion&) const’
/usr/lib/gcc/i386-redhat-linux/4.1.1/../../../../include/c++/4.1.1/bits/stl_vector.h:602: nota: los candidatos son: void std::vector<_Tp, _Alloc>::push_back(const _Tp&) [with _Tp = SemiProduccion, _Alloc = std::allocator<SemiProduccion>] <coincidencia cercana>
Solo que este error me lo da en el propio produccion.h y antes me lo daba al llamar a InsertarSemi (en Gramatica.C)..