【发布时间】:2015-04-27 03:20:56
【问题描述】:
下面是我理解为静态多态性的一个非常简单的例子。我不使用动态多态性的原因是我不想妨碍PROCESSOR 在op 中的函数内联。
template <class PROCESSOR>
void op(PROCESSOR* proc){
proc->doSomething(5);
proc->doSomethingElse();
}
int main() {
ProcessorY py;
op<ProcessorY>(&py);
return 0;
}
这个例子的问题是:没有明确定义PROCESSOR 必须定义什么功能。如果缺少一个,你只会得到一个编译错误。我认为这是一种糟糕的风格。
它还有一个非常实际的缺点:IDE 的在线帮助当然不能向您显示该对象上可用的功能。
定义PROCESSOR的公共接口的好/官方方法是什么?
【问题讨论】:
-
首先,你为什么要指针?其次,定义由您在该函数模板的文档中给出。
-
此外,IDE 不向您显示成员列表并不是一个非常重要的缺点。
-
你只需要等待Concepts TS。
-
@Columbo:指针,因为我不想按值传递可能巨大的 PROCESSOR。而且我个人喜欢 IDE 的建议,所以这个缺点是否显着只是个人喜好问题......
-
为什么是指针而不是引用?
标签: c++ templates static-polymorphism