【发布时间】:2022-01-06 04:45:56
【问题描述】:
由于程序(C++)中的一些限制,我有一个案例,我将一个可选字符串分配给一个字符串变量,这会产生以下错误:
error: no match for ‘operator=’ ...
这段代码是这样的:
void blah(std::experimental::optional<std::string> foo, // more parameters)
{
std::string bar;
if(foo)
{
bar = foo; //error
}
// more code
}
尝试:
我尝试使用以下方法将类型转换为匹配:
bar = static_cast<std::string>(foo);
最终显示此错误:
error: no matching function for call to ‘std::basic_string<char>::basic_string(std::experimental::optional<std::basic_string<char> >&)’
我想知道:
- 有没有办法处理这种情况?
- 否则这是设计限制,我必须使用其他方法而不是将可选字符串分配给普通字符串?
【问题讨论】:
-
文档应该对 std::experimental::optional/std::optional (C++17) 有所帮助。
标签: c++ string stdoptional