C ++'对象'?类似.NET和Java的对象

时间:2012-02-09 12:14:43

标签: c++

在C#中,您可以编写以下内容,如果类型正确,它就可以正常工作。 C ++中是否存在类似的内容?

object o = anything;
...
var anything2=(Anything)o;

3 个答案:

答案 0 :(得分:3)

也许boost :: any是你在寻找什么?它不完全相同,但可能适用于您的特定情况

答案 1 :(得分:2)

避免使用对象使用界面或模板。你需要这样的东西是什么原因?如果您需要将一组对象存储在同一个列表中(例如)或类似的东西,那么所有对象可能都有一些共同点。所以他们都应该实现一个接口,你的列表就像(std :: list< IMyObject *>)。

答案 2 :(得分:1)

如果你想要一个指向任何东西的指针的类型,那就是void*

不同之处在于,在C#中,您可以安全地将(几乎)任何内容转换为引用。在C ++中,它并不那么简单,如果你有一些不是指针的东西,你不能只将它转换为void*并期望它能够工作。

但是,我尽量避免在C#中使用object。这同样适用于C ++中的void*。尝试使用类型系统,而不是解决它。