Erreur bizarre...
Flo
Membre
Salut à tous,
j'ai une petite erreur bizarre que je n'arrive pas à m'expliquer, je fais une classe toute conne:
Et là , j'ai une magnifique erreur du compilo :
Line Location ITWindowController.h:15: error: syntax error before 'ITAppDelegate'
J'ai fais des tests et je peux déclarer n'importe quelle variable d'instance quelle soit issue d'une custom class ou pas, seul la déclaration ITAppDelegate *appDelegate ne marche pas
Je trouve ça aberrant, d'autant plus que pour le compilo il s'agit d'une erreur de syntax et donc non liée à l'importation du fichier de la class ITAppDelegate (qui elle se compile parfaitement)...
Aurais-je raté quelque chose ?
Merci d'avance pour vos réponses.
j'ai une petite erreur bizarre que je n'arrive pas à m'expliquer, je fais une classe toute conne:
<br />#import <Cocoa/Cocoa.h><br />#import "ITAppDelegate.h"<br /><br /><br />@interface ITWindowController : NSWindowController <br />{ <br /> IBOutlet NSOutlineView *outlineView;<br /> <br /> ITAppDelegate *appDelegate;<br />}<br />
Et là , j'ai une magnifique erreur du compilo :
Line Location ITWindowController.h:15: error: syntax error before 'ITAppDelegate'
J'ai fais des tests et je peux déclarer n'importe quelle variable d'instance quelle soit issue d'une custom class ou pas, seul la déclaration ITAppDelegate *appDelegate ne marche pas
Je trouve ça aberrant, d'autant plus que pour le compilo il s'agit d'une erreur de syntax et donc non liée à l'importation du fichier de la class ITAppDelegate (qui elle se compile parfaitement)...
Aurais-je raté quelque chose ?
Merci d'avance pour vos réponses.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Essaye de faire un Add > Existing Files ... avec ITAppDelegate.h et ITAppDelegate.m
Reessaye la compilation
Si tu as fait un copier-coller pour ce code, il se peut que des caractères spéciaux invisibles viennent perturber le code ...
Colle-copie dans textEdit en mode Texte, et fait la démarche inverse ...
Je commence à me demander si j'ai bien les idées claires...
Et avec @class ITAppDelegate; au lieu du #import "ITAppDelegate.h" , des fois qu'il y ait des problèmes de références croisées ?
/Users/Flo/iTrade/ITWindowController.h:6: error: syntax error before 'AT_NAME' token
/Users/Flo/iTrade/ITWindowController.h:11: error: syntax error before '}' token
/Users/Flo/iTrade/ITWindowController.h:13: fatal error: method definition not in @implementation context
/Users/Flo/iTrade/ITWindowController.h:6: error: syntax error before 'AT_NAME' token
/Users/Flo/iTrade/ITWindowController.h:11: error: syntax error before '}' token
/Users/Flo/iTrade/ITWindowController.h:13: fatal error: method definition not in @implementation context
Visiblement, il n'apprécie pas le @class, ou faillait-il mettre autre chose ?
Le @class ITAppDelegate; ne fait que déclarer : "il existe une classe ITAppDelegate" ce qui est suffisant pour ton interface. Il faut naturellement mettre le #import "ITAppDelegate.h" dans ITWindowController.m
Là maintenant les erreurs qu'ils montrent parlent d'autre chose
method definition not in @implementation context
Tu as du mettre le code d'une méthode où il ne faut pas (la bonne place est entre @implementation et @end dans le .m)
error: syntax error before 'AT_NAME' token
Souvent lié à de mauvais parenthésages, ou un @end mal placé ou doublé ...
Et puis pourquoi ces erreurs n'apparaà®traient qu'avec le @class et pas avec les import ?
Pour moi ya un problème quand le compilo interprète le @class ce qui perturbe le reste du code et donc donne des erreurs de syntaxe ... non ?
erreur
/Users/Flo/iTrade/ITAppDelegate.h:21: error: syntax error before 'ITWindowController'
et vice et versa dans ITAppDelegate
Non ce ne peut être cela.
@class ITAppDelegate; se contente simplement de signaler au compilateur que la classe existe, et que la déclaration d'un ITAppDelegate ne pose aucun problème .
mais je n'ai pas la moindre idée du pourquoi du comment  ;D
comment se fait-il que ces deux indications soient nécessaires alors que dans mes programmes précédents, tous marchaient très bien sans ?
En tout cas merci pour ton aide (encore une fois  ;) )
Quand tu fait un #import fichierA dans un fichier B, cela inclut physiquement le texte du fichier A dans le fichier B.
Mais si en plus tu fais #import fichierB dans le fichier A, tu inclus le fichier B dans A qui contient lui-même le fichier B, qui contient le fichier A, etc ... et il y un phénomène de boucle infinie impossible à résoudre pour le compilateur.
Alors qu'avec @class tu n'inclus rien du tout.