簡體   English   中英

C ++ void指針獲取結構

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM