在图书馆里我使用它与不同的签名功能如下如何开机运行时间数据类型
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放在开关块内。我希望能够以某种方式在开关块中首先切换指针的类型,然后只有1个Func,之后ptr1被动态地转换为相应的类型。
具体而言,我想要的东西如下:
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'可能会帮助你。 – chris
在编译时必须选择被调用的过载(因此在交换机中需要这三个调用)。 – Pixelchemist