Kāpēc tev failā B.h vajag iekļaut failu A.h ? Ja tāpēc, lai lietotu klasi A kautkādos funkciju argumentus - tad tu varēsi tur tikai lietot referenci uz klasi A vai pointeri uz klasi A, bet ne parastu klases A objektu. Kompilatoram vajag zināt A klases izmēru baitos, lai nokompilētu tās objekta izmantošanu. Referencei un pointeriem nevajag - tie vienmēr ir 4 baiti.
Ja tas der, tad B.h būtu jāizskatās šādi:
B.h
#pragma once
class A;
class B {
void func1(A&); // ok, reference
void func2(A*); // ok, pointeris
//void func3(A); // slikti, objekts!
};
(Lasīt komentārus)
Nopūsties: