LINUX.ORG.RU

C++


0

0

Почему это не компилится?
---begin(A.cpp)---
#include "A.h"
---end(A.cpp)---

---begin(A.h)---
#ifndef __A_H__
#define __A_H__
#include "B.h"
class B;
class A
{
B b;
};
#endif //__A_H__
---end(A.h)---

---begin(B.cpp)---
#include "B.h"
---end(B.cpp)---

---begin(B.h)---
#ifndef __B_H__
#define __B_H__
#include "A.h"
class A;
class B
{
A a;
};
#endif //__B_H__
---end(B.h)---

anonymous

что б создать класс A надо знать всё о классе B
и наоборот, что б создать класс B надо знать всё о классе A


Истользуй указатели. Или другую структуру создай.

anonymous
()

class B; class A { B *b; };

Вот так это будет работать

anonymous
()

А так почему не работает?
---begin(A.cpp)---
#include "A.h"
---end(A.cpp)---

---begin(A.h)---
#ifndef __A_H__
#define __A_H__
#include "B.h"
class B;
class A
{
B* b;
};
#endif //__A_H__
---end(A.h)---

---begin(B.cpp)---
#include "B.h"
---end(B.cpp)---

---begin(B.h)---
#ifndef __B_H__
#define __B_H__
#include "A.h"
class A;
class B
{
A a;
};
#endif //__B_H__
---end(B.h)---

anonymous
()

Убери

#include "B.h"

из "A.h". Оно там не нужно.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.