【发布时间】:2016-02-26 00:13:36
【问题描述】:
在我使用的库中,它具有不同签名的函数,如下所示
void Func( int* ptr);
void Func( float* ptr);
void Func( double* ptr);
我的函数需要根据输入标志 iSwitch 来决定调用哪个函数,如下所示:
void test( int iSwitch, void* ptr1)
{
switch (iSwitch)
{
case 0:
Func( (int*) ptr1);
break;
case 1:
Func((float*) ptr1);
break;
case 3:
Func((double*) ptr1);
break;
}
}
应该没问题。但是我不想把 Func 放在 switch 块中。我希望能够以某种方式首先在 switch 块中切换指针的类型,然后在 ptr1 被动态转换为相应类型之后只有 1 个 Func。
具体来说,我想要的东西如下:
void test( int iSwitch, void* ptr1)
{
switch( iSwitch)
{
// I want to be able to somehow switch type of pointer (say DummyDataType) here depending iSwitch
}
Func(( DummyDataType) ptr1);
}
您能否建议我如何做到这一点?
谢谢!
【问题讨论】:
-
听起来很像模板的用途。或指针数组。
-
boost::variant可能会对您有所帮助。 -
被调用的重载必须在编译时选择(因此你需要在 switch 中调用这三个)。