繁体   English   中英

将c ++代码翻译成java

[英]translate c++ code into java

我需要将一些c ++翻译成java,但我有一些问题。

当它们在Method中声明为参数时,如何处理指针?

static void test( double *output){}

那又是什么以及如何替换struct?

struct test { int t;
int arg;
float *pva;
double *array;
}

然后在他们使用的代码中:

double test(struct test *test)
{}

哦,最后一个......这也是在struct test中,意思是:

test->arg
static void test( double *output){}

这需要更多上下文,它可以表示指向double或double数组的指针。

struct test { int t;
int arg;
float *pva;
double *array;
}

一个struct是一class具有默认public访问级别。 您可以将其替换为具有public成员的类。

test->arg

这将访问testarg成员。

你没有Java中的指针,只有引用,只有对象(不是基本类型)。 引用就像指针,但你使用'。' 符号而不是'*'或' - >'。 此外,您不需要删除Java中的对象,您只需停止使用它们,最终将垃圾收集器用于销毁它们。

从上到下回答你的观点:如果test是C ++中结构或类的指针,而arg是test的成员变量,那么

test->arg

用于通过指针访问成员。 这将映射到

test.arg

在Java中,如果arg是测试对象的公共成员变量。

我会翻译以下内容:

struct test
{
    int t;
    int arg;
    float *pva;
    double *array;
}

...

double test(struct test *test)
{}

public class Test
{
    public int t;

    public int arg;

    float [] pva;

    double [] array;
}

...

public static double test(Test test)
{}

对于第一种情况,即功能

static void test( double *output){}

你不能将指针传递给double并在Java中修改double。 你必须返回双倍。 如果您还需要double作为输入参数,则将其指定为通过值传递的普通参数:

static double test(double output)
{}

我希望这有帮助。

在简单的情况下,您可以使用float []double []替换float *double *但是C ++允许您执行各种难以转换为Java的不愉快的事情,因为Java中不允许这样做。

您可以用class替换struct

如果您想了解基本的C ++语法,我建议您阅读有关如何使用C ++编程的指南。

(1) static void test( double *output){}

这里double*可以用Double[]替换(假设你做了一个new Double[] ),并且该方法可以放在一个class

class testMethod {
  public static void test (Double []output) { }
}

(2)如何替换struct 它可以替换为一个class

class test {
public int t;
public int arg;
public Float []pva;
public Double []array;
}

(3) double test(struct test *test) {}它可以,

double test (test t) {}

(4) test->arg

Java没有指针(尽管它是通过引用实现的); 所以上面的陈述将是test.arg

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM