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];

在您的示例代码中,您只是提供了一个逗号分隔的参数列表。您应该使用该方法的命名参数。

这两个错误中的第一个是因为方法projectFromPrice:与方法不同projectFromPrice:withRate:withVol:withDt:

projectFromPrice:withRate:withVol:withDt:是实际存在的方法,并且可能在您的接口(.h 文件)中定义。projectFromPrice:是您尝试调用但不存在的方法。

第二个错误是编译器假设未定义projectFromPrice:方法返回的id(指针)不能转换为双精度的结果。

于 2012-04-24T16:07:20.730 回答
0

这就是您调用第二种方法的方式,这似乎是问题所在。试试这个,而不是:

+(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 回答