2010-02-24 4 views

Répondre

8

Oui, il est, il vous suffit de mettre en avant les déclarations au sommet.

class Foo; 
class Bar; 

class Foo { 
    Bar makeBar(); 
}; 

class Bar { 
    Foo makeFoo(); 
}; 
+1

Comment le compilateur sait-il la taille de Bar à Foo :: makeBar()? – anon

+0

Il n'a pas à savoir à ce stade. Il faut juste savoir qu'il est possible d'en retourner un. À ce stade, il construit ensuite les classes Foo et Bar, qui maintenant il sait comment ils sont grands, et maintenant que vous appelez les méthodes, il a tout ce dont il a besoin. Cool, hein? –

+0

Pas pour une déclaration de fonction. http://www.goingware.com/tips/parameters/notrequired.html – Joel

2

Oui. Vous pouvez le faire avec un forward declaration.

Par exemple, dans Foo.h, ajouter:

class Bar; 

class Foo { 
    Bar makeBar(); 
}; 
+0

Hrm. Pourquoi les downvotes? –

Questions connexes