我有一点问题。我必须将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
}