我有一点问题。我必须将Java代码转换为C++代码。我在某些对象的一个​​Java类列表中。在C++中,我有相同目的的 vector 。但是,我在这行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++相同

最佳答案

假设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
}

10-06 16:18