【问题标题】:Java to Cpp code conversion: compareToJava 到 Cpp 代码转换:compareTo
【发布时间】:2013-06-23 13:35:44
【问题描述】:

我有一个小问题。我必须将 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++ 也一样

【问题讨论】:

  • 您说 Roba 列表中的返回类型是 String 并且在下面您说 roba 是 Roba 类的类型?哪一个是正确的?如果您发布您的 Java Roba 类(或定义,如果它确实是一个 java 列表)会更容易提供帮助

标签: java c++ oop


【解决方案1】:

假设m.roba.at(i) 以类似于std::string 的方式定义< 运算符,您可以将其更改为

if (m.roba.at(i) < m.roba.at(j)) {
    ...
}

与 Java 不同,C++ 允许编写自定义比较运算符。这就是 C++ 如何让您以更自然的方式编写自定义对象的比较 - 您可以使用 &lt; 运算符,而不是显式调用 compareTo。下面是如何定义运算符:

inline bool operator< (const Roba& lhs, const Roba& rhs) {
    // Comparison logic goes here
}

【讨论】:

  • hm...我收到此错误:“没有运算符“
  • @v0idmp3 然后您需要定义运算符 - 看看更新。来自compareTo 的代码用于比较逻辑,当lhs 小于rhs 时返回true。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-24
  • 1970-01-01
  • 2016-07-29
  • 2020-01-18
相关资源
最近更新 更多