用演绎的类型公开类成员函数
Exposing class member functions with deduced types
我正在尝试编写一个接口类,其中用户以DLL的形式提供其实现。作为该接口的一部分,有一些成员函数返回在运行时确定的推断类型,例如:
auto someFunction(int x) -> decltype(auto)
我在向客户端应用程序公开这些函数时遇到了麻烦。我试图对这个问题做一些研究,似乎导出成员函数的最流行的解决方案是将它们声明为虚拟的,以利用虚函数表。我尝试了这个方法,但得到了一个错误"虚拟函数不能有一个推导的返回类型"。有什么方法可以替代虚表方法吗?
谢谢。
你想做的是不可能的。虚函数不能是模板(在这种情况下,您可以将auto视为模板)。这样做的原因是所有的类型推导都发生在编译时,因为c++在运行时没有类型信息。虚函数解析发生在编译时。您正在寻找的技术(不是灵丹妙药,但有时适用)称为类型省略。
相关文章:
- 对RValue对象调用的LValue ref限定成员函数
- 为什么使用 "this" 指针调用派生成员函数?
- 将公共但非静态的成员函数与ALGLIB集成
- 使用指向成员的指针将成员函数作为参数传递
- 将重载的成员函数传递给函数模板
- 我不小心调用了一个没有自己类对象的成员函数.但这是怎么回事呢
- 如何在C++中使用非静态成员函数作为回调函数
- C++错误C2600:无法定义编译器生成的特殊成员函数(必须首先在类中声明)
- 关联容器的下界复杂性:成员函数与非成员函数
- 在 C++ 中用派生类型重写成员函数
- 链表的泛型函数remove()与成员函数remove)
- 如何将lambda作为模板类的成员函数参数
- constexpr构造函数需要常量成员函数时出现问题
- 将自由函数绑定为类成员函数
- 区分非成员函数和头文件中的成员函数
- 如何从子成员函数修改父公共成员变量
- 保留对其他类的成员函数的引用
- 在运算符重载定义中使用成员函数(const错误)
- 内联如何影响模块接口中的成员函数
- 将成员函数指针作为参数传递给模板方法