gpt4 book ai didi

c++ 中的 java.lang.Field 等价物

转载 作者:行者123 更新时间:2023-11-28 04:42:47 25 4
gpt4 key购买 nike

我有一段代码在 java 中使用 Field 内置函数,但我找不到在 C++ 中替换它的方法,代码如下所示,

import java.lang.reflect.Field; 

public class ParameterValue {
public String objectPath;
public Object objectReference;
public String fieldPath;
public String fieldPathNoCase;
public Field field;
public double value;

public ParameterValue(String path, ObjectTree tree, Field fieldInfo) {
objectPath = path;
objectReference = tree.getObject(path);
field = fieldInfo;
fieldPath = objectPath + "." + field.getName();
fieldPathNoCase = fieldPath.toLowerCase();
read();
}

public int getPrecision() {
if (field.getType().getName() == "float" || field.getType().getName() == "double")
return 2;
else
return 0;
}

public double getPrecisionMultiplier() {
return Math.pow(10, getPrecision());
}

public void read() {
String type = field.getType().getName();
try {
if (type.equals("double"))
value = field.getDouble(objectReference);
else if (type.equals("float"))
value = field.getFloat(objectReference);
else if (type.equals("int"))
value = field.getInt(objectReference);
else if (type.equals("byte"))
value = field.getByte(objectReference);
else
throw new RuntimeException();
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
value = Math.round(value * getPrecisionMultiplier()) / getPrecisionMultiplier();
}

public void write() {
String type = field.getType().getName();
try {
if (type.equals("double"))
field.setDouble(objectReference, value);
else if (type.equals("float"))
field.setFloat(objectReference, (float)value);
else if (type.equals("int"))
field.setInt(objectReference, (int)Math.round(value));
else if (type.equals("byte"))
field.setByte(objectReference, (byte)Math.round(value));
else
throw new RuntimeException();
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
}

public void rebind(ObjectTree tree) {
objectReference = tree.getObject(objectPath);
}
}

我从代码中了解到,我需要找到一个可以将其中的值转换为 Double、Float 等的类。我一直在寻找可以做到这一点的东西,但我做不到。代码引用: https://www.programcreek.com/java-api-examples/index.php?source_dir=SecugenPlugin-master/src/sourceafis/simple/Fingerprint.java#

最佳答案

据我所知,C++ 中没有等效的类。现在根据您的要求,首先列出 java 中 java.lang.reflect.Field 类提供的所有内容。列出所有实用方法后,只需对 C++ 应用程序中真正需要的所有方法进行排序即可。完成后,您将创建一个具有相同名称和方法类型的 C++ 类,并在可能的情况下自行实现逻辑。

关于c++ 中的 java.lang.Field 等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49877365/

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