0

クラスメソッド「getSimulatedPricesFrom」を持つクラスがあります。実行中に同じクラスからメソッド「projectFromPrice」を呼び出します。ただし、sTPlus1 行で、次の 2 つのエラーが発生します。

1) Class method "projectFromPrice" not found

2) Pointer cannot be cast to type "double" 

誰かが理由を知っていますか?.h ファイルで既にメソッドを宣言しています。以下は、AmericanOption.m ファイルのコーディングの一部です。

#import "AmericanOption.h"

@implementation AmericanOption

+(NSMutableArray*)getSimulatedPricesFrom:(double)s0 withRate:(double)r0 withVol:(double)v0 withDays:(int)D withPaths:(int)N
{
    double daysPerYr = 365.0;
    double sT;
    double sTPlus1;
    sT = s0;
...
    sTPlus1 = (double)[AmericanOption projectFromPrice:sT, r0/daysPerYr, v0/daysPerYr, 1/daysPerYr];
...
    return arrPricePaths;
}

+(double)projectFromPrice:(double)s0 withRate:(double)r0 withVol:(double)v0 withDt:(double)dt
{
    ...
}
4

2 に答える 2

1

次のように projectFromPrice メソッドを呼び出す必要があるようです。

sTPlus1 = [AmericanOption projectFromPrice:sT 
                                  withRate:r0/daysPerYr 
                                   withVol:v0/daysPerYr 
                                    withDt:1/daysPerYr];

サンプルコードでは、パラメータのコンマ区切りリストを提供しているだけです。メソッドの名前付きパラメーターを使用する必要があります。

2 つのエラーのうち最初のエラーは、 methodが methodprojectFromPrice:と同じではないためprojectFromPrice:withRate:withVol:withDt:です。

projectFromPrice:withRate:withVol:withDt:実際に存在し、おそらくインターフェイス (.h ファイル) で定義されているメソッドです。projectFromPrice:呼び出しようとしているメソッドですが、存在しません。

projectFromPrice:2 番目のエラーは、未定義のメソッドがiddouble にキャストできない (ポインター) を返すとコンパイラが想定した結果です。

于 2012-04-24T16:07:20.730 に答える
0

これは、問題と思われる 2 番目のメソッドを呼び出す方法です。代わりにこれを試してください:

+(NSMutableArray*)getSimulatedPricesFrom:(double)s0 withRate:(double)r0 withVol:(double)v0 withDays:(int)D withPaths:(int)N
{
    double daysPerYr = 365.0;
    double sT;
    double sTPlus1;
    sT = s0;
...
    sTPlus1 = (double)[AmericanOption projectFromPrice:sT withRate:r0/daysPerYr withVol:v0/daysPerYr withDt:1/daysPerYr];
...
    return arrPricePaths;
}

+(double)projectFromPrice:(double)s0 withRate:(double)r0 withVol:(double)v0 withDt:(double)dt
{
    ...
}
于 2012-04-24T16:09:59.103 に答える