Vraag : Kan de a.c. ++ klasse instanties van zich zonder het moeten „leegte *“ gebruiken verklaren?

Gezien een eenvoudige klasse, werkt het volgende niet omdat de compiler nog niet weet wat „TestClass“ is:

class TestClass
{
public:
  TestClass *AnotherInstance;
}

To maakt het werken, „AnotherInstance“ moet nietig worden verklaard (in de kopbal).   Alle verdere verwijzingen naar „AnotherInstance“ moeten dan typecast als dit zijn:   (TestClass *) AnotherInstance

Question: Aangezien typecasting zeer het ergeren en breedsprakig. krijgt. is er een manier om de compiler iets als het eerste voorbeeld hierboven meer goedkeuren te maken?

Thanks.

Antwoord : Kan de a.c. ++ klasse instanties van zich zonder het moeten „leegte *“ gebruiken verklaren?

>> zodat is mijn vraag werkelijk:  hoe ik de compiler kan vertellen dat Class2 later zal worden bepaald.
Als u de twee klassen met voorwaartse verwijzingen voorafgaat, zoals in:
klasse Class2;
klasse Class1;
dan uw code in HTTP: #33219489 compileert. Als u begint in compilatiekwesties te krijgen aangezien u punten aan uw klassen toevoegt, dan herinner enkel dat u twee kopbaldossiers, voor elke klasse, en twee .cpp dossiers kunt hebben - opnieuw, voor elke klasse; en dat kan u uit om het even welke moeilijkheden helpen.
Andere oplossingen  
 
programming4us programming4us