sha*_*ib_ 0 c++ struct void-pointers
所以我有以下两种结构.假设我有一个无效指针,根据情况,指向包或苹果.如何检查它指向哪种结构类型,以便我可以取消引用它?
struct product
{
int price;
string name;
};
struct fruit : product
{
int weight;
};
product bag;
fruit apple;
Run Code Online (Sandbox Code Playgroud)
编辑:所以这只是我在新工作中使用的代码的简化版本.我需要检查一个特定的变量,但是像水果中的权重变量一样,有时它会被一个空指针传递,有时它不是.已经有很多代码,所以从void指针改变它会太多了.我需要检查权重变量是否存在,然后根据其中的值做一些事情.
不要void*在C++中使用.几乎从来没有一种情况可以void*在客户端代码中用作真正的数据对象.
在你的情况下,void*你需要使用product*,并声明product*虚拟的析构函数.这样您就可以使用测试实际对象dynamic_cast.
更好的选择是仔细设计类,引入正确的虚函数,并确保永远不需要知道对象的实际类型.但这是一个单独问题的主题.