在dynamic_cast的模板扣
-
23-09-2019 - |
题
我有被定义为下面的类:
template <class WidgetType>
class CometWidget : public WidgetType;
在函数里,我这样做:
dynamic_cast<CometWidget *>(iter2->second.second)->changesCommited_();
和它解决了CometWidget
类型,依从并且正确运行。结果
所述CometWidget
类中的代码运行。
如何在地球上会发生这种情况?结果 为什么会这样?如果它甚至不能编译?
解决方案
如果是,那么你不需要明确限定模板CometWidget
的声明中(或任何你说来着CometWidget<...>
)。
其他提示
确实很有意思。在我看来,像一个有趣的编译器错误。
有可能推断出的CometWidget <>模板的正确的参数 - 同样,你可以推断出从参数列表的函数模板参数的方式。如果这将是静态的演员阵容,这将是那么令人惊讶。
使用动态铸造,几乎没有预计将在源和目标之间类型常见。因此,这样的“猜测”可能发生,但那就不是一个合法的。
编译器是本什么?
不隶属于 StackOverflow