[英]C++ void pointer to get struct
我正在嘗試學習空指針。 我想使用空指針獲取傳遞的結構內容。
這是我的結構:
Main.cpp
struct mynode
{
int id;
int amt;
};
struct mynode* myNode;
int main()
{
myclass mc;
mc.initialize(myNode);
getch();
}
myclass.cpp
void initialize(void* data)
{
//how to get passed struct here ?
}
好了,您可以將指針轉換回原始結構:
auto myStruct = static_cast<mynode*>(data);
但是,在使用void*
,您的代碼非常類似於C。
在C ++中,建議您以模板形式使用靜態多態性:
template<class Dependency>
void initialize(Dependency& data){/*...*/}
或動態多態,以繼承和覆蓋的形式:
struct BaseNode{
virtual ~BaseNode() = default;
};
struct MyNode : public BaseNode{};
void initialize (BaseNode* node){/*..*/};
在處理C API(例如POSIX或Win32)時,通常會使用void*
來在C ++中實現通用代碼,並且在代碼中應避免使用它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.