我有点问题。我必须将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 ++相同
答案 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
}