我正在考虑将一些代码从C++转换到Objective C,我遇到了一个实例,该实例包含一个函数,末尾有一个常量符号。我对C++相当生疏,我不记得这代表了什么(尽管我已经在谷歌上搜索过了)。我想知道怎么把这个传给Objective-C。目前,这是我所拥有的:
C++代码:
float RenderingEngine1::RotationDirection() const
{
float delta = m_desiredAngle - m_currentAngle;
if (delta == 0)
return 0;
bool counterclockwise = ((delta > 0 && delta <= 180) || (delta < -180));
return counterclockwise ? +1 : -1;
}Objective-C:
-(float)getRotationDirection{
float delta = desiredAngle - currentAngle;
if (delta == 0) {
return 0;
}
bool counterclockwise = ((delta > 0 && delta <= 180) || (delta < -180));
float test = counterclockwise ? +1 : -1;
NSLog(@"%f",test );
return counterclockwise ? +1 : -1; //problem
}编辑:发现了我的方法的错误,这只是程序中其他地方的一个附加问题(“我喜欢简单的”)。话虽如此,我确实希望确保const声明不会干扰任何进一步的问题,并希望检查以确保是否应该有任何我需要进行的声明(例如单例方法等)。谢谢你们的回答!
发布于 2013-03-06 04:27:04
c++中的常量意味着这个方法不会改变对象的状态,因此它可能只使用常量方法,而且它不能改变类变量,除非它们被声明为可变的。
如果您的类是不可变的,那么您可以放心地假设您声明的每个方法都是const方法的等价物。
但是,由于您没有更改任何ivar,因此您正在正确地“翻译”代码(从逻辑上讲),因为您没有更改任何ivar。
我看不出你的代码有什么特别的问题,不应该有语法(也不是语义)错误。
PS:这不是比较浮点数的方式,look here。
https://stackoverflow.com/questions/15233273
复制相似问题