Asw*_*win 1 c++ struct pointers
我正在努力学习无效指针.我想使用void指针获取传递的struct内容.
这是我的结构:
Main.cpp的
struct mynode
{
int id;
int amt;
};
struct mynode* myNode;
int main()
{
myclass mc;
mc.initialize(myNode);
getch();
}
Run Code Online (Sandbox Code Playgroud)
myclass.cpp
void initialize(void* data)
{
//how to get passed struct here ?
}
Run Code Online (Sandbox Code Playgroud)
好吧,你可以将指针强制转换回原始结构:
auto myStruct = static_cast<mynode*>(data);
Run Code Online (Sandbox Code Playgroud)
虽然,你的代码在使用中非常像C语言void*.
在C++中,建议您以模板的形式使用静态多态:
template<class Dependency>
void initialize(Dependency& data){/*...*/}
Run Code Online (Sandbox Code Playgroud)
或动态多态,以继承和覆盖的形式:
struct BaseNode{
virtual ~BaseNode() = default;
};
struct MyNode : public BaseNode{};
void initialize (BaseNode* node){/*..*/};
Run Code Online (Sandbox Code Playgroud)
采用void*要想在C++实现通用的代码与C API的问题时,像POSIX或者Win32的通常是,在你的代码,你应该避免使用它们.
| 归档时间: |
|
| 查看次数: |
369 次 |
| 最近记录: |