我正在尝试编写一个接口类,其中用户以DLL的形式提供他们的实现。作为该接口的一部分,有一些成员函数返回在运行时确定的推断类型,例如:
auto someFunction(int x) -> decltype(auto)我在公开客户端应用程序使用的这些函数时遇到了问题。我试着对这个问题做了一些研究,似乎导出成员函数最流行的解决方案是声明它们是虚拟的,以便使用vtable。我尝试过这种方法,但得到了一个错误“一个虚拟函数不能有一个推导的返回类型”。除了vtable方法之外,还有其他选择吗?
谢谢。
发布于 2015-08-27 15:20:17
你想做的事是不可能的。虚拟函数不能是模板(在这种情况下,您可以将汽车看作模板)。原因是所有类型的演绎都发生在编译时,因为在C++中运行时没有类型信息。而虚拟函数解析是在编译时发生的。您正在寻找的技术(不是银弹,但有时适用)称为类型省略。
https://stackoverflow.com/questions/32252400
复制相似问题