• [^] # Re: Je ne comprends pas G++

    Posté par . En réponse au journal Je ne comprends pas G++. Évalué à 1.

    Nan, nan. Essaie déjà de remplacer

    #include <chemin_vers_camera/camera.h>

    par

    #include "chemin_vers_camera/camera.h"

    Sinon, ton « chemin_vers_camera » sera lui-même relatif aux différents répertoires standard de dépot des headers C++, et donc pas à ceux de ton projet.

    Ensuite, que les headers fassent une boucle, c'est pas un problème en soi, si tant est qu'il soient protégés par des #ifndef et que les inclusions se fassent (évidement) avant les déclarations de classe. C'est plus génant si tes deux classes se réfèrent l'une à l'autre, genre class Map qui contient un pointeur vers Camera, et Camera qui contient un pointeur vers Map. Dans ce cas, évidement, il faut les déclarer chacune dans leur coin, en prototypant dans chacun des fichiers headers la classe d'en face.
    Donc, comme tu le fais:

    Map.h:
    class Camera;
    class Map
    {
    Blah blah blah
    };

    Camera.h:
    class Map;
    class Camera
    {
    Blah blah blah
    };

    Deux réserves cependant:

    1) Il n'est pas du tout dit que ce soit effectivement la cause du problème présent. Essaie déjà d'utiliser des guillemets dans tes #include.

    2) J'ai déjà été confronté à ce problème mais si tu as un deadlock entre deux classes, cela peut révéler une erreur de conception antérieure. Typiquement, dans le cas précis, une méthode qui renverrait une classe homologue serait condamnée à créer cet objet dynamiquement, objet qui en aucun cas ne pourrait être un membre de la classe qui contient la méthode en question, par exemple.