将多个函数组合为单个泛型函数
Combining multiple functions to single generic function
我有两个函数来初始化接口指针,每个函数初始化特定版本的指针。现在我必须把这些函数变成一个泛型函数。
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();
}
似乎你只是在寻找函数重载:
bool init(MSTSCLib::IMsRdpClient9*);
bool init(MSTSCLib::IMsRdpClient8*);
bool init(MSTSCLib::IMsRdpClient7*);
bool init(MSTSCLib::IMsRdpClient9* iface)
{
iface->putSomeData1();
iface->putSomeData2();
iface->putSomeData3();
}
// ...
相关文章:
- C++调用具有 *this 属性的单个帮助程序函数
- C++:带有大括号初始化列表的函数调用表达式 - 标准是否规定在单个元素列表的微不足道的情况下忽略大括号?
- 如何在 c++ 中将整个数组初始化为类构造函数中的单个元素
- 是否可以使用单个定义定义函数的常量和常规版本?(使用模板,自动,decltype等)
- 使用可变参数函数将整数和/或整数数组放入单个 int 数组中
- 多个可变参数函数的单个模板参数包?
- 将指向多维数组向量中的单个项的指针传递给函数 c++
- 如何将多个函数重载作为单个参数传递?
- 具有默认值的单个参数构造函数是否与默认构造函数相同?
- 如何使用 TBB 在单个线程中运行函数
- 模板化虚拟函数,管理单个类的不同类属性
- 如何对具有相同类型的成员使用单个函数 C++.
- 如何使用每个对象的单个构造函数参数动态分配C++对象数组?
- 外部 C 和 C++ 对于单个函数(bsearch / qsort)的目的是什么?
- 如何使用 std::cout 或 std::ofstream 作为单个函数的输入?
- C 使用单个函数对具有多种值类型的数组排序
- 如何使用单个对象调用具有相同名称的两个类函数
- 如何在C 中的单个构造函数中调用多个构造函数
- C++ 中深度嵌套函数的单个捕获全部语句?
- C :类 - 超载构造函数 - 单个变量