我正在尝试将包含一些静态方法的旧“C”程序转换为Obj-c但是我在编译时遇到了一些问题。在头文件中我得到了:
@interface Anneal : NSObject
...
...
+(float)approxInitT;
-(costType)simulatedAnnealing;
...
并在实现文件中,这两个问题方法(为简洁起见也简化了):
@implementation Anneal
+(float)approxInitT
{
float T=0.0;
int m2=0;
...
if(m2==0)
T = T_LIFESAVER;
else
T = T / m2 / log(initProb);
return T;
}
-(costType)simulatedAnnealing
{
float T;
...
if(Tset)
T=initialT;
else
T=[self approxInitT]; // error:incompatible types in assignment
}
不幸的是我收到了“不兼容的赋值类型”错误,即使'T'和类方法的返回都是'float'类型。虽然代码包含多个源文件(我预计在接下来的几天内会遇到更多问题),但它们都在同一个文件中。 问题显然是由于我称之为'approxInitT()'的错误,但是到目前为止,对互联网的搜索还没有发现我的问题的任何答案。
作为一名新手,我没有任何多模型代码或使用静态/类方法的经验,我一定会对此有所帮助。在此先感谢: - )
答案 0 :(得分:2)
类方法不属于类的任何特定实例。所以,尝试将消息传递给类本身 -
T = [ Anneal approxInitT ];
答案 1 :(得分:1)
self
引用特定类的实例,但在调用类方法(+approxInitT
)时,必须将消息发送给您的类:T=[Anneal
approxInitT]