重新定义 class 成员数据类型
Redefining class member data types
是否可以在 class 成员初始化后更改其数据类型?比方说,将名为 "Foo" 的 double 重新定义为字符串?
没有。类型在编译时是固定的。如果你想在双精度和字符串之间切换,也许可以使用 std::variant:
std::variant<double, std::string> val = 1.0;
val = std::string("hello");
作为对您评论的回答,您应该使用 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;
}
}
是否可以在 class 成员初始化后更改其数据类型?比方说,将名为 "Foo" 的 double 重新定义为字符串?
没有。类型在编译时是固定的。如果你想在双精度和字符串之间切换,也许可以使用 std::variant:
std::variant<double, std::string> val = 1.0;
val = std::string("hello");
作为对您评论的回答,您应该使用 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;
}
}