Est-il possible de définir les classes C++ Foo et Bar s.t.C++ "class Foo return Bar" et "class Bar return Foo" possible?
class Foo {
Bar makeBar();
};
class Bar {
Foo makeFoo();
};
?
Merci!
Est-il possible de définir les classes C++ Foo et Bar s.t.C++ "class Foo return Bar" et "class Bar return Foo" possible?
class Foo {
Bar makeBar();
};
class Bar {
Foo makeFoo();
};
?
Merci!
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();
};
Oui. Vous pouvez le faire avec un forward declaration.
Par exemple, dans Foo.h
, ajouter:
class Bar;
class Foo {
Bar makeBar();
};
Hrm. Pourquoi les downvotes? –
Comment le compilateur sait-il la taille de Bar à Foo :: makeBar()? – anon
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? –
Pas pour une déclaration de fonction. http://www.goingware.com/tips/parameters/notrequired.html – Joel