hka*_*ncu 1 c++ error-handling
我必须在我的代码中使用这个库函数.这个函数返回struct包括这样的union东西:
union (
int int_value;
double double_value;
const char * text_value;
} value;
Run Code Online (Sandbox Code Playgroud)
每次调用此函数时,我都必须使用switch语句检查返回类型,就像引用页面中的示例一样.真正的问题是我必须在我的代码中多次使用此函数,准确地说是15次.每次检查返回类型非常非常令人沮丧,如果它不是很糟糕的话,结果代码非常难看.我试图将此代码包装在返回类型为auto的成员函数中.但它甚至没有编译.
您的示例代码不适合现实世界的代码!
如果你有一个作为返回类型的联合,你必须知道联合的哪个字段持有有效值.所以我希望你有类似的东西:
struct SOME_TYPE
{
enum { IS_TEXT, IS_INT, IS_DOUBLE } valid_type;
union return_val
{
char* text_val;
int int_val;
double double_val;
}
};
Run Code Online (Sandbox Code Playgroud)
如果你的返回类型包含这样的类型信息(这是必须的),那么很容易创建casting class这个struct/union作为参数.这个类现在可以为你做任何类型的测试,类型安全!并自动.它还可以生成(工厂模式)子类,它可以执行仅对给定值类型有效的所有操作.
class UnionHandler
{
public:
UnionHandler( const SOME_TYPE& val )
{
switch ( val.valid_type)
{
case... whatever you want
}
}
bool Check() { // whatever you want }
}
Run Code Online (Sandbox Code Playgroud)
但是根本就是:避免工会!!!!!!!!
| 归档时间: |
|
| 查看次数: |
2597 次 |
| 最近记录: |