Как изменить тип int для удвоения в переполнении стека

Есть ли способ инициализировать переменную как тип общего числа или типа int, а затем изменить ее тип, например, на удвоение?

TYPE x = 4;
// commands changing its type
here it(variable x) became double.

Я знаю, что это странно.

Переменная должна иметь одинаковое имя.

0

Решение

Нет. C ++ — это статически типизированные языки. Тип фиксируется при объявлении переменной.

Вы можете сделать то, что вы описываете, используя союз, но требуется большая осторожность, например,

union DoubleInt
{
int i;
double d;
};

DoubleInt X;
X.i = 4;

// ... whatever

X.d = X.i;
X.d += 0.25;

Но профсоюзы — действительно единственный разумный вариант, когда вы отчаянно нуждаетесь в биткойне. Вы также можете создать класс, который может вести себя как double или int, но на самом деле то, о чем вы говорите, не похоже на то, как вы думаете C ++.

В заключение, повышение :: вариант может делать что хочешь?

10

Другие решения

Хотя невозможно изменить тип переменной, вы можете определить тип, способный представлять переменные различный типы. Это обычно называется вариант. Иди и получи Boost.Variant что позволяет писать код так:

boost::variant<int, double> t_either_int_or_double;

t_either_int_or_double = 1;

// now it is "int"assert(boost::get<int>(t_either_int_or_double);

t_either_int_or_double = 1.0;

// now it is "double"assert(boost::get<double>(t_either_int_or_double);
2

По вопросам рекламы [email protected]