2011-07-13 4 views
1

Cela fait des heures que je suis occupé et je ne trouve pas de solution. Lorsque j'essaie de compiler ce qui suit, j'obtiens l'erreur "Types incompatibles dans l'initialisation" sur les lignes marquées. Toute aide est acceptée.Types incompatibles dans l'erreur d'initialisation

Voici mon fichier Controller.m:

#import "Controller.h" 
#import "Transactions.h" 

@implementation Controller 
- (IBAction)add:(id)sender { 
    double x = [addF doubleValue]; 
    double bal = [balanceF doubleValue]; 
    double newBal = [trans add:x to:bal]; //Error marked here 
    [balanceF setDoubleValue:newBal]; 
} 

- (IBAction)sub:(id)sender { 
    double x = [subF doubleValue]; 
    double bal = [balanceF doubleValue]; 
    double newBal = [trans sub:x from:bal]; //Error marked here 
    [balanceF setDoubleValue:newBal]; 
} 
@end 

Et voici mon fichier Transactions.m:

#import "Transactions.h" 

@implementation trans 

-(double) add:(double)x to:(double)bal{ 
    return (x + bal); 
} 

-(double) sub:(double)x from:(double)bal{ 
    return (bal - x); 
} 

@end 

S'il vous plaît me dire si vous avez besoin d'autre chose. Merci!

+0

curieux ... à quoi ressemble votre fichier Transactions.h? –

+0

Avez-vous déclaré les méthodes add et sub dans le fichier d'en-tête Transactions avec les mêmes signatures? – omz

Répondre

1

« trans » est une classe, donc si vous déclarez/méthode appel à l'aide de la classe, et non une instance, ils doivent être déclarés avec +:

+(double) add:(double)x to:(double)bal{ 

+(double) sub:(double)x from:(double)bal{ 

Ne pas oublier de changer en le fichier d'en-tête ainsi ...

+0

Merci pour la réponse rapide! Je pensais avoir déjà déclaré 'bal' comme' double' ici: 'double bal = [balanceF doubleValue];' – Simon

+0

vous l'avez fait, mais il s'agit des modificateurs de méthode, pas des variables. ignorer la réponse avant l'édition, c'était juste faux. – MByD

+0

Parfait! Merci de votre aide. – Simon

Questions connexes