2

我有一个小问题。我必须将 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”的合适转换”

我忘了提到 list roba 是 Roba 类的类型。C++ 也一样

4

1 回答 1

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
}
于 2013-06-23T13:37:34.850 回答