我的專案中必須有一個語意堆疊,其中將包含多種型別。
我的目標是讓我的專案使用現代 C 。
擁有任何型別的堆疊的正確方法是什么?
java 中的等效版本是Stack<Object>.
其中哪些是正確的?
- 使用
void*并將其轉換為我想要的型別。 - 像 1 一樣的東西,但使用了一些智能指標。(我不知道是什么)
uj5u.com熱心網友回復:
std::any用于存盤任何型別的物件(可能存在限制)。
但是,存盤任何型別的整個設計很少是理想的。通常,最好使用可變引數模板來保持多型性完全編譯時間,或者只有有限的型別集(std::variant),甚至使用 OOP 層次結構。哪個更合適取決于用例。
uj5u.com熱心網友回復:
void* 指標是純 C 的東西,在 C 中已過時。當您為物件/變數/成員動態分配記憶體時,可以使用智能指標(例如 unique_ptr 或 shared_ptr)。不要將某些不是您創建的 API 指標物件包裝在智能指標物件中。當您將引數傳遞給函式并且需要避免復制物件時,您最好使用參考而不是指標。但是,您可以在 C 中使用原始指標,但不建議這樣做。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/425963.html
上一篇:對串列建構式的C 呼叫不明確
下一篇:異步似乎不使用多執行緒C
