C++中的Java.Lang.field等价物 我有一个代码,它使用java中的字段内置函数,而我找不到在C++中替换它的方法。代码如下所示,

C++中的Java.Lang.field等价物 我有一个代码,它使用java中的字段内置函数,而我找不到在C++中替换它的方法。代码如下所示,,java,c++,Java,C++,导入java.lang.reflect.Field; 公共类参数值{ 公共字符串对象路径; 公共对象对象引用; 公共字符串字段路径; 公共字符串fieldPathNoCase; 公共领域; 公共双重价值; 公共参数ValueString路径,ObjectTree树,字段fieldInfo{ objectPath=path; objectReference=tree.getObjectpath; 字段=字段信息; fieldPath=objectPath+。+field.getName; fiel

导入java.lang.reflect.Field; 公共类参数值{ 公共字符串对象路径; 公共对象对象引用; 公共字符串字段路径; 公共字符串fieldPathNoCase; 公共领域; 公共双重价值; 公共参数ValueString路径,ObjectTree树,字段fieldInfo{ objectPath=path; objectReference=tree.getObjectpath; 字段=字段信息; fieldPath=objectPath+。+field.getName; fieldPathNoCase=fieldPath.toLowerCase; 阅读 } public int getPrecision{ 如果field.getType.getName==float | | field.getType.getName==double 返回2; 其他的 返回0; } 公共双getPrecisionMultiplier{ return Math.pow10,getPrecision; } 公共无效读{ 字符串类型=field.getType.getName; 试试{ 如果type.equalsdouble 值=field.getDoubleobjectReference; 如果为type.equalsfloat,则为else 值=field.getFloatobjectReference; 如果为type.equalsint,则为else 值=field.getInObjectReference; 如果为type.equalsbyte,则为else 值=field.getByteobjectReference; 其他的 抛出新的RuntimeException; }捕获非法访问异常{ 抛出新的RuntimeExceptionOne; } value=Math.roundvalue*getPrecisionMultiplier/getPrecisionMultiplier; } 公共无效写入{ 字符串类型=field.getType.getName; 试试{ 如果type.equalsdouble field.setDoubleobjectReference,值; 如果为type.equalsfloat,则为else field.setFloatobjectReference,floatvalue; 如果为type.equalsint,则为else field.setIntObject引用,intMath.roundvalue; 如果为type.equalsbyte,则为else field.setByteobjectReference,byteMath.roundvalue; 其他的 抛出新的RuntimeException; }捕获非法访问异常{ 抛出新的RuntimeExceptionOne; } } 公共无效RebinObjectTree树{ objectReference=tree.getObjectPath; }

根据我的知识,C++中没有等价类。现在,对于您的需求,首先列出java.lang.reflect.Field类在java中提供的所有内容。一旦列出所有实用方法,只需排序您C++应用程序中真正需要的所有方法。一旦完成,您就创建了一个具有相同名称和方法类型的C++类,并在可能的情况下自行实现逻辑。C++没有反射。你也许可以做一些类似的事情。IHOO你最好把C++代码想什么,我怎么能用类似的方式来应用?@ JAA-C,不是严格的,在那里,只是不在盒子外。围绕着一个简单的包装器。你不能仅仅自己实现反射。这是一种语言特性,不是您实现的。您需要完全不同的逻辑来实现C++中类似的目标。我能够创建一个服务SDK的字段类,并且运行良好。谢谢你的主意。