在C#中,您可以编写以下内容,如果类型正确,它就可以正常工作。 C ++中是否存在类似的内容?
object o = anything;
...
var anything2=(Anything)o;
答案 0 :(得分:3)
也许boost :: any是你在寻找什么?它不完全相同,但可能适用于您的特定情况
答案 1 :(得分:2)
避免使用对象使用界面或模板。你需要这样的东西是什么原因?如果您需要将一组对象存储在同一个列表中(例如)或类似的东西,那么所有对象可能都有一些共同点。所以他们都应该实现一个接口,你的列表就像(std :: list< IMyObject *>)。
答案 2 :(得分:1)
如果你想要一个指向任何东西的指针的类型,那就是void*
。
不同之处在于,在C#中,您可以安全地将(几乎)任何内容转换为引用。在C ++中,它并不那么简单,如果你有一些不是指针的东西,你不能只将它转换为void*
并期望它能够工作。
但是,我尽量避免在C#中使用object
。这同样适用于C ++中的void*
。尝试使用类型系统,而不是解决它。