我尝试使用升压::可选我怎样才能返回字符数组的boost ::可选
boost::optional<const char *> foo() {
char ar[100] = {};
return boost::make_optional(true, ar);
}
返回简单数组,我得到了以下错误:
could not convert ‘boost::make_optional(bool, const T&) [with T = char [100]](ar)’ from ‘boost::optional<char [100]>’ to ‘boost::optional<const char*>’ return boost::make_optional(true, ar);
我该如何处理如此混乱?
呃,你*不要!*如果你想有一个字符串,然后使用'std :: string'。如果你想要一个运行时可变的向量,然后使用'std :: vector'。如果你想要一个在编译时固定大小的数组,然后使用'std :: array'。 –
至于你的问题,数组不是指针,指针也不是数组。再次阅读错误消息,并查看它推断出“ar”的类型。然后将它与您所说的返回类型进行比较。 –
但我知道数组的名称是指向数组的第一个元素的指针。奇怪... –