Java到C ++的代码转换:compareTo

时间:2013-06-23 13:35:45

标签: java c++ oop

我有点问题。我必须将Java代码转换为C ++代码。我在一个java类列表中有一些对象。在C ++中,我有相同目的的向量。但是,我在这行Java代码中遇到了一个问题:

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“到”char“的合适转换”

我忘了提到列表roba是Roba类的类型。与C ++相同

1 个答案:

答案 0 :(得分: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
}