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 に答える