I want to push objects of class B type in vector<B> obj present in class A. However I'm getting some weird errors. I tried some examples but all of them were storing pointer objects, whereas I want to store a copy. Kindly suggest a fix.
class A{
public:
string name;
vector<B> obj;
};
class B{
string characteristics;
A* pt_A;
};
int main(){
//Reading a xml file into vectors;
//Objects and their vector declaration
A e1;
B e2;
vector<A> vec_A; //Node lst
vector<B> vec_B; //Edge lst
vector<A>::iterator ptr1, ptr2;
for(ptr1 = vec_A.begin(); ptr1 < vec_A.end(); ptr1++){
for(ptr2 = vec_B.begin(); ptr2 < vec_B.end(); ptr2++){
if(ptr1->name == "abc")
ptr2_2->obj.push_back(&(*ptr1));
}}
Even if all code is commented out in main, compiler reports:
Error: B was not declared in this scope vector<B> obj;
Error: Template argument 1 is invalid. vector<B**>** obj
Error: Template argument 2 is invalid