1

我正在考虑将一些代码从 C++ 转换为 Objective C,我遇到了一个实例,该实例包含一个末尾带有 const 表示法的函数。我对 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;
    }

目标-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 声明不会干扰任何进一步的问题,并想检查以确保是否应该有任何我需要进行的声明(例如单例方法等)。谢谢你们的答案!

4

1 回答 1

1

c++ 中的 const 意味着这个方法不会改变对象的状态,因此它可以只使用 const 方法,并且它不能改变类变量,除非它们被声明为可变的。

如果您的类是不可变的,您可以放心地假设您声明的每个方法都等效于 const 方法。

但是,由于您没有更改任何 ivar,因此您正在正确“翻译”代码(从逻辑上讲),因为您没有更改任何 ivar。

我没有看到您的代码有任何特殊问题,不应该有语法(既不是语义)错误。

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

于 2013-03-05T20:27:04.193 回答