Jag får detta trevliga fel när jag försöker kompilera min kod.Kan man alltsån inte inkludera en klass som inkluderar den klassen som vill inkludera?Det går alltsån inte att ha dubbelt beronde eller finns det något annat som kan vara fel?.
Ursprungligen inskrivet av hawy
[BDet går alltsån inte att ha dubbelt beronde eller finns det något annat som kan vara fel?. [/B]
#include är ju bara en preprocessor-operation som ersätts med det som ska inkluderas, så du kan inte ha cykler med såna nä. Kolla "Cyclic dependencies" längst ner på den här sidan för hur man kan göra.
Ursprungligen inskrivet av hawy Kan man alltsån inte inkludera en klass som inkluderar den klassen som vill inkludera?Det går alltsån inte att ha dubbelt beronde eller finns det något annat som kan vara fel?.
Nej. "#include <x>" betyder att filen x skall klistras in där include-kommandot står, så det blir problem om man har cirkulära beroenden. Ofta hjälper det att dela upp sin kod i .h-filer och .cpp-filer, där man i .h-filerna är sparsam med att inkludera andra .h-filer om det inte är helt nödvändigt. Man kan också ofta använda framåtdeklarationer istället för att inkluderingar. http://en.wikipedia.org/wiki/Forward_declaration
Vill bara varna för dålig design...
Men som Elgot sa, använd framåtdeklarationer, så löser det sig nog. (Och jag antar du har slängt in #ifndef-grejen)
Ursprungligen inskrivet av Obbedemus (Och jag antar du har slängt in #ifndef-grejen)
Jag frågade det eftersom jag misstänker att så inte är fallet. Jag vill minnas att felmeddelandet i rubriken kan uppkomma om man saknar include guards (och har cirkulära inkluderingar, A inkluderar B som inkluderar A => oändlig include-loop).