Основная идея этой проблемы должна иметь смысл, глядя на код ниже, но я попытаюсь объяснить.В основном у меня есть два класса, которые ссылаются друг на друга с помощью указателей, а затем эти классы находятся в двух отдельных заголовочных файлах.Программа работает только без той части, где в указатель Ah
#include <iostream>
#include "A.h"
#include "B.h"
using namespace std;
class a;
class b;
int main()
{
a* oba = new a;
b* obb = new b;
oba->set(obb,9);
obb->set(oba,0);
cout<<oba->get()<<endl;
cout<<obb->get()<<endl;
delete obb;
delete oba;
return 0;
}
//This is the A.h, look for the comment in the code where the error occurred.
#ifndef _A
#define _A
#include "B.h"
#include <vector>
class b;
class a
{
private:
b* objb;
int data;
vector <b*> vecb;//this is not well liked by the compiler???
public:
void set(b* temp, int value);
int get();
};
void a::set(b* temp, int value)
{
objb = temp;
data = value;
}
int a::get()
{
return data;
}
#endif
#ifndef _B
#define _B
#include "A.h"
class a;
class b
{
private:
a* obja;
int data;
public:
void set(a* temp, int value);
int get();
};
void b::set(a* temp, int value)
{
obja = temp;
data = value;
}
int b::get()
{
return data;
}
#endif
добавлен вектор указателей типа b