将c ++代码翻译成java

时间:2011-10-31 09:25:56

标签: java c++ pointers struct translation

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

如何在方法中将它们声明为参数时必须处理指针?

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

4 个答案:

答案 0 :(得分:1)

static void test( double *output){}

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

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

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

test->arg

这会访问arg中的test成员。

答案 1 :(得分:1)

你没有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)
{}

我希望这会有所帮助。

答案 2 :(得分:0)

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

您可以将struct替换为class

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

答案 3 :(得分:0)

  

(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