【发布时间】:2025-12-12 23:00:02
【问题描述】:
我有几个函数来初始化接口指针,每个函数都为特定版本初始化指针。现在我必须将这些函数变成一个通用函数。
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 Intellisense 将很难获取详细信息。
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();
}
【问题讨论】:
-
可能是模板函数?
-
每种类型的逻辑都不一样?最好保持相同的功能,但有重载
标签: c++ code-readability