2012-04-27 53 views
4

このメソッドはCardクラス内にあります。私が望むのは値を減算することです。以下は私が作成した方法です。しかし、それは私にこのポストのタイトルで述べられているエラーを与える。以下は、エラーが指し示す行です。バイナリ式のオペランドが無効です( 'double'と 'double *')

latestPoints = ([self.points doubleValue] - requiredPoints); 

これはどうすればいいですか?私は同じエラーを言っているこのような記事を見たことがあるが、私は何をしたいのか価値があるものは見つけられなかった。

アドバイスお願いします。

Card.h

#import <Foundation/Foundation.h> 

@interface Card : NSObject 

    @property (nonatomic, strong) NSNumber *points; 

- (double) subtractPoints: (double *) requiredPoints; 

@end 

Card.m

#import "Card.h" 

@implementation Card 

@synthesize points = _points; 


- (double) subtractPoints:(double *)requiredPoints 
{ 

    double latestPoints; 

    latestPoints = ([self.points doubleValue] - requiredPoints); 

    return latestPoints; 
} 

@end 
+0

ダブルポイントではないことを意味しましたか? – rdelmar

+3

私はovjective-cについて何も知らないので、私はここで間違っているかもしれませんが、誤りは全く自明ではありませんか? requiredPointsはポインタです。それに格納されている値を使用するには、まずそれを参照解除する必要があります。私はそれを "ダブル"値で使用することを意味します。 – spicavigo

+1

@rdelmarが正しいです - (double *)引数の型を(double)に変更する必要があります。ダブルスはプリミティブ型であり、値渡しされます。 – Steve

答えて

3

なぜダブルポインターを使用してdouble値を渡していますか?または、ダブル配列を渡そうとしていますか?いずれかの方法

latestPoints = ([self.points doubleValue] - *requiredPoints); 

あなたのための仕事を行います。配列(単一次元)の場合* requiredPointsは配列の最初の値を取得します

EDIT:また、単一のdouble値を渡そうとしている場合は、ポインタを使用する必要はありません。

- (double) subtractPoints:(double)requiredPoints 

で十分です。

[yourObject substractPoints:your_double_value]; 
+0

ありがとう!私はちょうど(ダブル*)requiredPointsの*を削除し、今すぐ動作します:) – Grauzten

+0

あなたの質問から@Grauztenそれはあなたのポインターの理解が非常に限られているようです。もしあなたが客観的なC開発者になりたいなら、Cのポインタと使い方を学ぶ時間を取ってください。すべて最高です – Krishnabhadra

+0

その理由はまったく新しいです。私はしたい、私はあなたが提案したことをやるだろう。あなたが知っている役に立つリンクがあれば、私は何かを謙虚に要求してもよいでしょう。ありがとう! :) – Grauzten

1

変更double*subtractPointsのあなたのメソッド定義でdoubleに、それが動作するはずです。

これが失敗する理由は、doubleの値からポインタを減算するためです。もう一つの選択肢は、引き算の引数requiredPointsを逆参照することです。しかし、私はあなたの引く方法のポインタ型としてdoubleを提供したいと思う理由はない。

+0

ありがとう!これをして、それは働いた。 – Grauzten

関連する問題