Можно ли изменить тип данных члена класса после его инициализации? Скажем, переопределить двойное имя «Foo» для строки?
Как ответ на ваш комментарий, вы должны использовать std::optional
std::optional<int> Do(int x, int y)
{
if ( x == y )
{
return 42;
}
return {};
}
int main()
{
auto ret = Do(3,2); // << exchange your test data here!
if ( ret )
{
std::cout << "Got an answer" << ret.value() << std::endl;
}
else
{
std::cout << "No answer" << std::endl;
}
}
Нет. Типы фиксируются во время компиляции. Если вы хотите переключиться между двойной и строкой, возможно, достигните станд :: вариант:
std::variant<double, std::string> val = 1.0;
val = std::string("hello");