更改模板类的类型

0 c++ templates types

作为Ruby中的一个例子(1.8)

i = 4
i.class => fixnum

i += 1.3
i.class => float
Run Code Online (Sandbox Code Playgroud)

这可以用C++实现吗?

例如

template<class T>
struct Number {};

Number<int> foo;

foo.changeTypeToFloat(); // <-- Possible?

// foo now Float?
Run Code Online (Sandbox Code Playgroud)

Oli*_*rth 5

C++是一种静态类型的语言.变量具有固定类型.您在语言级别可以做的最好的事情是转换为新变量,例如:

int i = 5;
float f = static_cast<float>(i);
Run Code Online (Sandbox Code Playgroud)

或者,您可以编写变体类,并在内部处理转换.但对于上述情况,这确实是语法糖.