Я работаю над проектом на C++ и пытаюсь выяснить, как сделать «динамическую» переменную.Переменные в стиле Python в C++
В Python переменные могут иметь несколько типов:
variable = 0
variable = "Hello"
В Java, это не является также (несколько) достижимо:
Object o = 0;
o = "Hello";
Из того, что я могу найти связанные с C++, нет object
тип или «динамический» объект.
Причина мне это нужно, это я пытаюсь создать объект, который принимает в любой из следующих типов: int
, float
, char
, string
, bool
, и позволит мне делать такие операции, как:
object o = 0; // currently an int
o -= 2.5; // now a float
o += "Test"; // now a string
Есть ли какие-либо функции по умолчанию для такого рода переменных? Если нет, это можно сделать с помощью макросов, struct
и т. Д.?
Я нашел такие вещи, как это:
template <typename name>
Но не имеют ни малейшего представления о том, как использовать его.
У C++ 17 будет 'std :: any', что именно вы хотите. Прямо сейчас, вы можете использовать 'boost :: any' или откатить свою собственную реализацию.Однако это не динамично. – user2296177
@ user2296177 Я работаю с C++ 11 и надеюсь (но я рад отказаться от поддержки, если не возможно), чтобы иметь обратную совместимость. Я бесполезен с C++, не могли бы вы привести мне пример? Я не знаю, с чего начать ... – finnrayment
Вы всегда можете создать класс, который будет иметь векторы всех типов, которые вы хотите поддерживать, а затем добавить к нему интерфейс. Но это на первый взгляд кажется очень плохой идеей с точки зрения ремонтопригодности и удобочитаемости. Я бы подумал о том, чтобы реализовать что-то подобное очень сложно и попытаться придумать совершенно другое решение. – mirosval