【问题标题】:C++ translated to objective-CC++ 翻译成 Objective-C
【发布时间】:2013-03-05 20:17:48
【问题描述】:

我正在考虑将一些代码从 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 声明不会干扰任何进一步的问题,并想检查以确保是否应该有任何声明我需要进行(例如单例方法等)。谢谢各位大神解答!

【问题讨论】:

  • here
  • 只是一个评论...你知道你可以使用 Objective-C++ 来制作一个连接器吗?所以你可以直接编译你的 c++ 代码而不需要翻译它
  • 有什么问题?请发布错误,您的 Objective-C 版本适用于我。最后的 const 确保您不会在此方法中修改类的任何成员。
  • 问题是我在 C 和 C++ 端返回不同的变量,并希望确保 const 声明不会导致差异。这是一个相当轻微的头痛。

标签: c++ objective-c xcode constants translation


【解决方案1】:

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

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

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

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

PS:这不是你应该比较浮点数的方式,look here

【讨论】:

  • 在这个特殊的原因(由于最终结果等),尽管这段代码取自 O'reilly 的书(所以我不是非正统的罪魁祸首,哈哈),老实说,它应该无关紧要。谢谢你的信息。我真的需要确保这不会导致问题并且我的代码很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
  • 2016-01-22
  • 2015-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-15
相关资源
最近更新 更多