将多个功能组合到单个通用功能
问题描述:
我有几个函数来初始化一个接口指针,每个函数初始化特定版本的指针。现在我必须将这些功能变成一个通用功能。将多个功能组合到单个通用功能
bool init_9(MSTSCLib::IMsRdpClient9* iface)
{
iface->putSomeData1();
iface->putSomeData2();
iface->putSomeData3();
}
bool init_8(MSTSCLib::IMsRdpClient8* iface)
{
iface->putSomeData2();
}
bool init_7(MSTSCLib::IMsRdpClient7* iface)
{
iface->putSomeData1();
iface->putSomeData3();
}
我想知道是否有任何更好地落实到下面的原型,因为每个语句需要接口指针的明确的铸造,也Visual Studio的智能感知将很难获取详细信息。
bool init(void* ptriface, int version)
{
void* iface; // todo: make this type to required version
// Cast iface at run-time according to version number
// switch(version){}
iface = reinterpret_cast<MSTSCLib::IMsRdpClient9*>(ptriface);
iface = reinterpret_cast<MSTSCLib::IMsRdpClient8*>(ptriface);
iface = reinterpret_cast<MSTSCLib::IMsRdpClient7*>(ptriface);
// switch(version){}
iface->putSomeData1();
iface->putSomeData2();
iface->putSomeData3();
iface->putSomeData4();
}
答
好像你只是在寻找函数重载:
bool init(MSTSCLib::IMsRdpClient9*);
bool init(MSTSCLib::IMsRdpClient8*);
bool init(MSTSCLib::IMsRdpClient7*);
bool init(MSTSCLib::IMsRdpClient9* iface)
{
iface->putSomeData1();
iface->putSomeData2();
iface->putSomeData3();
}
// ...
模板功能可能? –
每种类型的逻辑是不同的?也可以保持相同的功能,但过载 – AndyG