Je voulais faire rapidement un petit programme et j'ai eu pleins de problèmes toute la journée. J'ai essayé d'isoler le bug et j'en suis arrivé au programme minimal suivant:
DataStore.h:
ApplicationController.h
ApplicationController.m:
DataStore.m:
Ce programme ne compile pas et me donne une "Error: parse error before 'DataStore'" (dans le fichier ApplicationController.h)
Ce programme compile si j'enlève la ligne "#import "ApplicationController.h"" et la ligne "ApplicationController *applicationController" de DataStore.h mais bien évidemment j'en ai besoin pour accéder aux méthodes de l'ApplicationController et vice versa pour DataStore qui a besoin d'accèder à ApplicationController.
Si j'ai bien compris le role de de la directive #import, elle inclue le fichier qu'une et une seule fois. Ce qui ferait que ApplicationController.h s'incluerait lui-même. C'est certainement le problème mais j'ai aucune idée sur la manière de le contourner.
J'ai du louper quelque chose d'hyper simple, mais j'ai tout vérifier et là je sèche. Ce qui m'étonne d'autant plus que j'ai fait des programmes beaucoup plus compliqués et que je ne suis jamais tombé sur ce genre de problèmes.
Bref, si quelqu'un pouvait me dire le truc évident à coté duquel je suis passé.
Merci d'avance.
DataStore.h:
Bloc de code:
#import <Cocoa/Cocoa.h>
#import "ApplicationController.h"
@interface DataStore : NSObject {
ApplicationController *applicationController
}
@end
Bloc de code:
#import <Cocoa/Cocoa.h>
#import "DataStore.h"
@interface ApplicationController : NSObject {
DataStore *dataStore;
}
@end
Bloc de code:
#import "ApplicationController.h"
@implementation ApplicationController
@end
Bloc de code:
#import "DataStore.h"
@implementation DataStore
@end
Ce programme compile si j'enlève la ligne "#import "ApplicationController.h"" et la ligne "ApplicationController *applicationController" de DataStore.h mais bien évidemment j'en ai besoin pour accéder aux méthodes de l'ApplicationController et vice versa pour DataStore qui a besoin d'accèder à ApplicationController.
Si j'ai bien compris le role de de la directive #import, elle inclue le fichier qu'une et une seule fois. Ce qui ferait que ApplicationController.h s'incluerait lui-même. C'est certainement le problème mais j'ai aucune idée sur la manière de le contourner.
J'ai du louper quelque chose d'hyper simple, mais j'ai tout vérifier et là je sèche. Ce qui m'étonne d'autant plus que j'ai fait des programmes beaucoup plus compliqués et que je ne suis jamais tombé sur ce genre de problèmes.
Bref, si quelqu'un pouvait me dire le truc évident à coté duquel je suis passé.
Merci d'avance.