【发布时间】:2009-10-11 13:04:43
【问题描述】:
是否可以创建一个模板接受实现特定接口的类型?
例如,我想对模板用户说:你可以在我的容器中存储任何东西,只要它实现了Init() 和Destroy() 方法。
谢谢
【问题讨论】:
-
这是stackoverflow.com/questions/1550370/…的副本,但这个问题措辞更好,更笼统=)
-
不知道怎么理解这个问题。容器是否只存储一种类型(支持方法)或不同类型的元素?
-
容器存储任何类型的元素,前提是该类型继承并实现了所需的接口。因此,例如,容器可以在插入/删除元素时调用 Element.Init() 和 Element.Destroy()。
-
简单的答案是“编译器已经强制执行”。如果您的模板尝试调用 Init() 和 Destroy(),那么如果您尝试存储未定义这两个方法的对象,则会出现编译错误。
标签: c++ inheritance templates