我有被定义为下面的类:

template <class WidgetType>
class CometWidget : public WidgetType;

在函数里,我这样做:

dynamic_cast<CometWidget *>(iter2->second.second)->changesCommited_();

和它解决了CometWidget类型,依从并且正确运行。结果 所述CometWidget类中的代码运行。

如何在地球上会发生这种情况?结果 为什么会这样?如果它甚至不能编译?

有帮助吗?

解决方案

如果是,那么你不需要明确限定模板CometWidget的声明中(或任何你说来着CometWidget<...>)。

其他提示

确实很有意思。在我看来,像一个有趣的编译器错误。

有可能推断出的CometWidget <>模板的正确的参数 - 同样,你可以推断出从参数列表的函数模板参数的方式。如果这将是静态的演员阵容,这将是那么令人惊讶。

使用动态铸造,几乎没有预计将在源和目标之间类型常见。因此,这样的“猜测”可能发生,但那就不是一个合法的。

编译器是本什么?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top