使用成员函数模板实现接口的功能
Implementing an interface's function using member function templates
我想知道是否有可能通过成员函数模板实现"接口"的功能,如下所示:
struct VisitorI
{
virtual void Visit(int) = 0;
virtual void Visit(float) = 0;
};
struct VisitorC : public VisitorI
{
template<class T>
void Visit(T) { /*Assume Visit(T) has syntatically the same implemenation for each relevant T */}
};
template void VisitorC::Visit(int);
template void VisitorC::Visit(float);
int main()
{
VisitorC Visitor;
return 0;
}
上面的代码无法编译,因为 foo(int) 和 foo(float) 在 VisitorC 中被认为是纯虚拟的,所以我认为这是不可能的。我真的看不出有什么特别的理由为什么不应该......?
干杯达米安
作为一种解决方法,您可以:
struct VisitorC : public VisitorI
{
virtual void Visit(int a) { Visit_impl(a); }
virtual void Visit(float a) { Visit_impl(a); }
private:
template<class T>
void Visit_impl(T) { /* ... */ }
};
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- 多态性和功能结合
- 带内存和隔离功能的SQLite
- 在CMakeLists.txt的安装功能中使用.cmake文件有什么用
- 类模板的成员功能的定义在单独的TU中完全专业化
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- C++要在其中添加接口功能的类层次结构
- Java本机接口-C 不在等待Java功能完成
- 任何挂钩功能的单一接口
- 接口会议派生的类功能而无需铸造
- 是否有任何挂钩接口在编译时间内更换功能
- C 将功能实现对象作为接口类型
- 统一功能使用模板专业化和接口来调用实例和原始类型
- 在接口的功能实现中
- C++原型软件ZMQ.客户端-服务器接口的功能
- 使用成员函数模板实现接口的功能
- c++多个接口到同一个功能模板
- 类接口功能
- 通过多个接口访问虚拟功能
- 在不改变接口的情况下为对象增加功能