我嘗試使用升壓::可選我怎樣才能返回字符數組的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」的類型。然後將它與您所說的返回類型進行比較。 –
但我知道數組的名稱是指向數組的第一個元素的指針。奇怪... –