【发布时间】:2018-10-10 21:29:01
【问题描述】:
我发现了一些与我有关的问题,但它们并没有真正回答我的问题。在 Java 和 C# 中,我们有一个“object”数据类型(或在 C# 中是“var”),它可以像任何东西一样存储。例如,我想使用一个二维数组,它的类型设置为对象,所以我也可以在其中存储整数和字符串。但我真的很想念 C++ 中的这一点。据我所知,在 C++ 中有模板,但我真的不知道它们是如何工作的。
template <class T>
T t[] = {1, "2"};
这给出了一个错误。我知道列表,但如果可能的话,我想使用数组。
【问题讨论】:
-
您关于
var的说法是绝对错误的。 C# 中的var是语法糖,它让编译器确定类型。它不是object -
见
std::any/std::variant或他们的 boost 同行 -
出于好奇,你为什么需要那个?
-
在 Java 中,任何类
Foo隐式继承自Object。 C++ 中没有这样的基础类型。 -
“但我真的很怀念 C++ 中的这一点” - 顺便说一句,如果你需要将你的对象称为
class Object不止非常非常偶尔,那么你可能做错了。即使在Java。