C++翻译成目标-C

问题描述:

我寻找到从C++翻译一些代码,目标C和我遇到了一个包含与在最后一个const符号功能的实例。我在C++上很生疏,我不记得这代表了什么(虽然我一直在使用Google)。我想知道如何强制Objective-C。目前,这里就是我:C++翻译成目标-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 

} 

编辑:发现我的方式错误,它只是一个另外的问题其他的地方该节目('我爱那些容易的人')。话虽如此,我确实希望确保常量声明不会干扰任何进一步的问题,并希望检查是否应该有任何我需要做出的声明(如单例方法等)。谢谢你们的答案!

+1

请参阅[这里](http://*.com/questions/1549869/what-does-const-mean-follow-a-function-method-signature) – juanchopanza 2013-03-05 20:19:32

+0

http://*.com/questions/3868106/does-an-approximation-of-cs-const-methods-exist-for-objective-c – Pradheep 2013-03-05 20:20:26

+3

只是一个评论...你知道吗,你可以使用Objective-C++来创建一个连接器吗?所以你可以直接编译你的C++代码而不需要翻译它 – Pedrom 2013-03-05 20:21:03

常量在C++中意味着这个方法不会改变对象的状态,因此可以仅使用const的方法,除非他们宣布可变它不能改变类变量。

如果你的类是不可变的,你可以放心地认为每一个你声明的方法是一个常量方法是等效的。

但是,因为你没有改变任何伊娃,你在“翻译”的代码正确(从逻辑上来说),因为你没有任何变异伊娃。

我看不出有任何特别的问题与您的代码,不应该有一个语法(既不语义)错误。

PS:这不是你应该如何比较浮点数,look here

+0

由于这个特殊的原因(由于最终结果等原因),尽管这段代码是从O'reilly的书中找到的(所以我不是非正统的罪魁祸首),但这应该不重要。谢谢你的信息,但。我真的需要确保这不会导致问题,我的代码也没问题。 – TheCodingArt 2013-03-05 20:46:29