【发布时间】:2012-02-10 14:01:12
【问题描述】:
我有一个联合和枚举,例如:
typedef union{
Home HomeInfo;
Office OfficeInfo;
} Info;
typedef enum{
eHOME,
eOFFICE
} InfoType;
Home 和 Office 是其他结构。
我有另一个函数,其原型是
void SetInfo(InfoType, Info);
在函数调用过程中,如果InfoType 是eHOME,我会创建一个Info 对象Info info; 并填写HomeInfo 详细信息info.HomeInfo 并调用
SetInfo(eHONE, info);
SetInfo 定义:
SetInfo(InfoType infotype, Info info)
{
if (eHOME == infotype)
{
// get the details from info.HomeInfo structure
}
else if(eOFFICE == infotype)
{
// get the details from info.OffiiceInfo structure
}
}
如果我将eHOME 传递为InfoType 并传递OfficeInfo 的详细信息,如何获得无效案例?虽然此时我曾经获取HomeInfo 的详细信息,但其中有垃圾值,因此不会出错。 InfoType检查后是否可以检查结构是什么?
【问题讨论】:
-
我读了你的问题大约三遍,但我仍然无法理解它......你能创建一个自包含的简单示例,其中包含一些输入的预期输出以突出问题吗?
标签: c++ c function structure unions