gpt4 book ai didi

java - C++ 结构到 Java 类

转载 作者:行者123 更新时间:2023-11-30 04:02:27 25 4
gpt4 key购买 nike

我想像这样转换一个 C++ 结构:

typedef struct FEATUREINFO
{
string str_ID;
char* c_ID;
double* featureData;
int group;
bool bPrint;
IplImage *t_faceImg;
}FEATUREINFO;

我会用它:

FEATUREINFO * p_featureNode = new FEATUREINFO[100];
for(int j=0; j<100 ; j++)
{
p_featureNode[j].featureData = (double*)calloc(t_featureLen,sizeof(double));
p_featureNode[j].bPrint = false;
}

在 Java 代码中我写了我的代码:

class FEATUREINFO
{
string str_ID;
char[] c_ID;
public Double[] featureData;
int group;
public boolean bPrint;
//IplImage *t_faceImg;
public FEATUREINFO()
{
this.featureData = new Double[1280] ;
}
} // class FEATUREINFO

然后写一段简单的代码来测试我是否成功:

FEATUREINFO[] p_featureNode = new FEATUREINFO[100];
p_featureNode[5].featureData[2] = 100.5 ; // this line will error!!! =(
Log.d(Tag_Test, "featureData :" + p_featureNode[5].featureData[2] ) ;

我是Java初学者,请帮助我!非常感谢!

我的错误是: http://i.imgur.com/lwUaSTg.png

再次感谢!!!! =D

最佳答案

C++ 将每个数组元素初始化为默认状态(为每个数组元素调用默认构造函数)- Java 不会。

你需要这样的东西:

FEATUREINFO[] p_featureNode = initializeWithDefaultFEATUREINFOInstances(100);
...

public static FEATUREINFO[] initializeWithDefaultFEATUREINFOInstances(int length)
{
FEATUREINFO[] array = new FEATUREINFO[length];
for (int i = 0; i < length; i++)
{
array[i] = new FEATUREINFO();
}
return array;
}

关于java - C++ 结构到 Java 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25072030/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com