Es un error bastante extraño, verán tengo 2 clases, una de ellas con un string como miembro y la otra tiene un vector de objetos de la otra clase y un metodo que solo crea y añade un objeto a ese vector.
Cuando tenía interfaz e implementación juntos en el mismo fichero, el compilador aceptaba el objeto sin problemas, pero después de separarlos ya no lo reconoce, aun pudiendo acceder sin problemas a la declaración de la clase del objeto.
He intentado declarando un puntero a vector de A en vez de hacerlo de esta forma y resulta igual. También, si en B::addA() haces:
Accede sin problemas al objeto, con lo cual creo que puede acceder perfectamente a la declaración de la clase en ese momento.
¿Que estoy haciendo mal?
Gracias de antemano.
Cuando tenía interfaz e implementación juntos en el mismo fichero, el compilador aceptaba el objeto sin problemas, pero después de separarlos ya no lo reconoce, aun pudiendo acceder sin problemas a la declaración de la clase del objeto.
Código (cpp) [Seleccionar]
#ifndef _MYHEADER_HPP_
#define _MYHEADER_HPP_
class A{
public:
std::string someString;
};
class B{
public:
std::vector<A> aList;
public:
void addA();
};
#endif /* _MYHEADER_HPP_ */
//implementation file
#include <string>
#include <vector>
#include "myheader.hpp"
void B::addA(){
A a;
a.someString = "Hola";
// Here compiler says : Invalid arguments 'Candidates are: void push_back(const A &)' line 18 Semantic Error
aList.push_back(a);
}
He intentado declarando un puntero a vector de A en vez de hacerlo de esta forma y resulta igual. También, si en B::addA() haces:
Código (cpp) [Seleccionar]
std::cout << a.someString << std::endl;
Accede sin problemas al objeto, con lo cual creo que puede acceder perfectamente a la declaración de la clase en ese momento.
¿Que estoy haciendo mal?
Gracias de antemano.