0

OK、私はおそらくOOPを学ぼうとするビジネスはなく、最も単純な小さな最初のプログラムで問題を抱えています。実装が不完全であるというメッセージが表示されます(以下の4つのエラーを示している行にコメントしました)。なにが問題ですか?とりわけ型指定子が必要ですが、NSStringで指定しませんか?NSStringは、インターフェイスの場合のように、実装ではXCODEの色を緑色に変更しないことに気付きました。

また、インターフェイスでメソッドを宣言し、実装でまったく同じものを入力する必要があるのはなぜですか?つまり、startDrinking:(NSString *)newBeverageを両方に入力する必要があるのはなぜですか?

#import <Foundation/Foundation.h>


@interface Drinks : NSObject {
    NSString *beverage;
}

- (void) startDrinking: (NSString*) newBeverage;  // setter
- (void) printDrink;

@end


@implementation Drinks
{

//THIS NEXT LINE IS WHERE I GET 4 ERRORS
    - (void) startDrinking: (NSString *) newBeverage {
        beverage = [[NSString alloc]initwithString:newBeverage]
        }


    -(void) printDrink {

                NSLog(@"How is your", beverage);
            }

        }

@end


int main (int argc, const char * argv[]) {


    Drinks *beverage = [[Drinks alloc] init];

    [beverage startDrinking:@"Lemonade"];

    return 0;
}
4

2 に答える 2

0

あなたの質問はおしゃべりすぎます。

セミコロンが並んでいませんでしたbeverage = [[NSString alloc]initwithString:newBeverage]

行は次のようになります:

beverage = newBeverage;

NSLog行は次のようになります。

NSLog(@"How is your %@", beverage);

ヘッダーでのメソッドシグネチャの宣言の場合、その後にCとC++が続きます。あなたが考えることができるように、コンパイラはどの関数が最初に利用可能であるかを知る必要があります。

于 2013-02-26T03:06:49.540 に答える
0

あなたの間違いは{すぐ下@implementation Drinksです。そのため、配置もめちゃくちゃになります。

一般に、報告された行にエラーが見つからない場合は、かっこ、角かっこ、または中かっこが不要または欠落していることを確認してください。奇妙な配置はこれへのもう一つの手がかりです。

お役に立てれば。また、他の人が言ったように、あなたの主題がより意味がある場合に役立ちます。自分だけでなく、同様の問題を抱えている可能性のある他の人にも

于 2013-02-26T13:12:48.620 に答える