【发布时间】:2019-09-29 19:03:47
【问题描述】:
我有一个算法,需要使用名为“Stack”(即“LinkedStack”、“ArrayStack”等)的父类的许多实现来执行。 我想如果我把这个算法写成一个函数并提供某种通用类型/模板函数魔法,问题就会解决。
但我没有找到任何方法。
我已经搜索并尝试了许多语法,但也许不可能?
template<class T: Stack> // Imaginary synthax to tell "T is a Stack"
void doTaskWithSpecificImplementation()
{
// Eventually somewhere in the function:
T stack = new T();
}
void main() {
doTaskWithSpecificImplementation<LinkedStack>();
}
我希望这段代码能够提供一种调用函数的简便方法,同时规定使用特定的虚拟类实现。
【问题讨论】:
-
我会推断您来自 java 或类似的地方,您可以在泛型类型上使用
extends。通常 C++ 使用更多的编译时鸭子类型方法(尽管这会随着概念的变化而变化)。 -
@MaxVollmer 确实如此。谢谢!
标签: c++