У меня есть пара функций для инициализации указателя интерфейса и каждой функции инициализации указателя для конкретной версии. Теперь мне нужно превратить эти функции в одну общую функцию.Объединение нескольких функций в одну общую функцию
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();
}
Функция шаблона может быть? –
Логика для каждого типа различна? Возможно также сохранить ту же функцию, но с перегрузками – AndyG