从Java Object类到C ++

我是C ++的新手,我的背景是Java。 我必须将一些代码从Java移植到C ++,并且相对于Object Java的类有一些疑问。 所以,如果我想移植它:

void setInputParameter(String name, Object object) { ..... } 

我相信我应该使用void * type或templates吗? 我不知道实现它的“标准”程序是什么。

谢谢

这取决于你想用object做什么。

如果使用模板,则在object调用的任何方法都将在编译时绑定到object的类型。 这是类型安全的,并且是可取的,因为对象的任何无效使用都将被标记为编译器错误。

您也可以传递一个void *并将其转换为所需类型,假设您有某种方式可以知道它应该是什么。 这更危险,更容易受到代码中的错误的影响。 通过使用dynamic_cast<>启用运行时类型检查,可以使其更安全一些。

如果要接受指向任意对象的指针,那么您希望该类型为void * 。 但是,这将是函数的结束,除了存储它的值或将其转换为指向某个已知对象的指针之外,您无法对void *执行任何操作。 无论如何你要投射它,那么你可能知道对象是什么,所以你不需要void *

C ++没有与Java相同的内省能力。 换句话说,没有一种方便的方式可以说像myObject.getClass().getName() 。 我所知道的最接近的是运行时类型信息(RTTI),你可以在这里看到它。

另一种方法是创建自己的根类,并编写自己的内省方法(很多C ++框架都这样做)。