2013-03-05 197 views
1

我尋找到從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://stackoverflow.com/questions/1549869/what-does-const-mean-follow-a-function-method-signature) – juanchopanza 2013-03-05 20:19:32

+0

http://stackoverflow.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

回答

1

常量在C++中意味着這個方法不會改變對象的狀態,因此可以僅使用const的方法,除非他們宣佈可變它不能改變類變量。

如果你的類是不可變的,你可以放心地認爲每一個你聲明的方法是一個常量方法是等效的。

但是,因爲你沒有改變任何伊娃,你在「翻譯」的代碼正確(從邏輯上來說),因爲你沒有任何變異伊娃。

我看不出有任何特別的問題與您的代碼,不應該有一個語法(既不語義)錯誤。

PS:這不是你應該如何比較浮點數,look here

+0

由於這個特殊的原因(由於最終結果等原因),儘管這段代碼是從O'reilly的書中找到的(所以我不是非正統的罪魁禍首),但這應該不重要。謝謝你的信息,但。我真的需要確保這不會導致問題,我的代碼也沒問題。 – TheCodingArt 2013-03-05 20:46:29