C++ void指针获取结构

标签 c++ pointers struct

我正在尝试学习 void 指针。我想使用 void 指针获取传递的结构内容。

这是我的结构:

main.cpp

struct mynode
{
    int id;
    int amt;
};
struct mynode* myNode;

int main()
{   
    myclass mc;
    mc.initialize(myNode);
    getch();
}

我的类.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){/*..*/};

使用 void* 以在 C++ 中实现通用代码通常在处理 C API 时出现,例如 POSIX 或 Win32,在您的代码中您应该避免它们。

关于C++ void指针获取结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40637827/

相关文章:

c++在没有运算符的情况下获取变量的地址&

python - boost .Python : inheret from C++ object in python: Cannot add to C++ base class list

c++ - 在 OpenCL 中分配内存,创建主机指针,但在需要时才将其写入设备

pointers - 如何在golang中干净地初始化两个相互依赖的结构?

c - 指针、结构和 malloc()

c++类成员返回奇数

c++ - 多指针 X (MPX) 支持

c++ - 在 C++ 中从十六进制转换为 unsigned int*

c - 将结构体传递给c中的函数

c++ - 在另一个指向结构的指针内访问结构指针内的元素