2013-06-23 82 views
2

我有一點問題。我必須將Java代碼轉換爲C++代碼。我有一個java類的一些對象列表。在C++中,我具有相同目的的向量。但是,我在這行Java代碼中遇到了問題:Java到Cpp的代碼轉換:compareTo

if(compareTo(m.roba.get(i), m.roba.get(j)) == -1) 

m是類的對象,roba是lista(來自Java)。從該列表返回的是字符串的類型(這是一些名稱)。那麼如何在C++中做同樣的事情呢?我嘗試這樣做:

if(strcmp(m.roba.at(i), m.roba.at(j)) != -1) 

在C++,但我得到的錯誤:「從沒有合適的轉換‘德羅巴’到‘字符’存在」

我忘了提,單ROBA是德羅巴類的類型。同爲C++

+0

你說Roba列表的返回類型是字符串,並且下面你說過roba是Roba類的類型?哪一個是正確的?如果你發佈了Java Roba類(或者定義是否確實是一個java列表),它會更容易幫助。 – giorashc

回答

1

假設m.roba.at(i)定義<運營商類似std::string的方式,你可以改變這

if (m.roba.at(i) < m.roba.at(j)) { 
    ... 
} 

與Java,C++允許編寫自定義的比較操作。這就是C++如何讓您以更自然的方式編寫自定義對象的比較 - 而不是明確調用compareTo,您可以使用<運算符。這裏是如何定義運營商:

inline bool operator< (const Roba& lhs, const Roba& rhs) { 
    // Comparison logic goes here 
} 
+0

hm ...我得到這個錯誤:「no operator」<「匹配這些操作數」 –

+0

@ v0idmp3 You需要定義運營商然後 - 看看更新。 'compareTo'的代碼用於比較邏輯,當'lhs'小於'rhs'時返回'true'。 – dasblinkenlight