Цель C - создание объектов и вызов методов с несколькими параметрами - PullRequest
0 голосов
/ 09 июня 2011

Привет, у меня есть следующий класс, который называется CalculatorOperations:

#import "CalculatorOperations.h"

@implementation CalculatorOperations

+(float)add:(float)numOne with:(float)numTwo{
    return numOne + numTwo;
}
@end

Затем я пытаюсь вызвать этот метод класса из моего класса Calculator следующим образом:

#import "Calculator.h"
#import "CalculatorOperations.h"
#import <Foundation/Foundation.h> 

@implementation Calculator

+(float)add:(float)numOne to:(float)numTwo{
    CalculatorOperations *calcOp = [CalculatorOperations alloc];
    float answer = [calcOp add:numOne with:numTwo];
    return answer;
}

@end

Проблема в том, что я продолжаю получать сообщение "несовместимые типы при инициализации", когда пытаюсь присвоить возвращаемое значение метода add: with переменной (answer).

Почему это?

Ответы [ 3 ]

2 голосов
/ 09 июня 2011

Вы не должны вызывать метод класса (+ обозначает метод класса) для экземпляра класса. Кроме того, вы не init используете класс, как требуется для экземпляра этого класса.

Попробуйте это:

@implementation Calculator

+(float)add:(float)numOne to:(float)numTwo{
    return [CalculatorOperations add:numOne with:numTwo];
}

@end
1 голос
/ 09 июня 2011

+ означает, что это метод класса, а не метод экземпляра, измените методы на -, чтобы сделать его методом instacne.

 #import "CalculatorOperations.h"
 @implementation CalculatorOperations

- (float)add:(float)numOne with:(float)numTwo{
    return numOne + numTwo;
}
@end

Также вам нужно инициализировать класс:

#import "Calculator.h"
#import "CalculatorOperations.h"
#import <Foundation/Foundation.h> 

@implementation Calculator

+(float)add:(float)numOne to:(float)numTwo{
    CalculatorOperations *calcOp = [[CalculatorOperations alloc] init];
    float answer = [calcOp add:numOne with:numTwo];
    return answer;
}

@end

Или измените вызов с помощью метода (float)add:(float)numOne with:(float)numTwo:

@implementation Calculator

+(float)add:(float)numOne to:(float)numTwo{
    float answer =  [CalculatorOperations add:numOne with:numTwo];
    return answer;
}

@end

Черт, мне нужно научиться печатать быстрее.

0 голосов
/ 09 июня 2011

Тебе нужно ....

CalculatorOperations *calcOp = [[CalculatorOperations alloc] init];

Плюс ваш метод является методом класса (отсюда +) ...

float value = [CalculatorOperations add:1.0 with:2.0];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...