【发布时间】:2011-06-17 15:22:27
【问题描述】:
我只想做以下事情:
template <typename T>
class gvar {
private:
T var;
public:
gvar(T var) : var(var) {}
};
std::stack<gvar> some_stack;
g++ 吐出各种关于 gvar 不是类型的错误。这可以通过某种相对简单的方式实现吗?我不喜欢使用 boost::any / boost::variant。
编辑:
澄清我想要什么:
一个 std::stack 可以保存不同类型的变量(只是原语就可以了)。
【问题讨论】:
-
为什么不使用 boost::any?它专为您所追求的目标而设计(尽管您的问题非常模糊,因此很难确定)——无论如何,您永远不会解释您希望代码做什么。我们无法从您编造的语法中猜出您希望它如何工作。您是否希望能够创建一个
std::stack,它可以容纳具有多种不同类型T的gvars?像gvar<int>和gvar<float>在同一个堆栈中吗? -
@jalf:实际上只是在同一个堆栈中的 'int' 和 'float' 就可以了......我试图用模板做一些事情,但后来我发现不能那样工作。
-
我们想知道
union不符合您的目的的原因。
标签: c++ templates generics variables stack