Frage

Ich habe eine Klasse, die als Folgendes definiert ist:

template <class WidgetType>
class CometWidget : public WidgetType;

In einer Funktion mache ich das:

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

und es löst die CometWidget Geben Sie ein, entsprechen und laufen Sie richtig.
Der Code läuft in der CometWidget Klasse.

Wie um alles in der Welt passiert das?
Warum ist das so? Sollte es überhaupt kompilieren?

War es hilfreich?

Lösung

Sie können das Attribut-Tool-TOOLBARTEMPLATE="NONE" im Ansichtselement hinzufügen generasacodicetagpre.

Andere Tipps

In der Tat sehr interessant. Es scheint mir wie ein interessanter Compiler -Fehler.

Es ist möglich, das korrekte Argument der CometWidget <> -Schance zu leiten - genauso wie Sie die Vorlagenparameter einer Funktion aus der Argumentliste abgeben können. Wenn es statische Besetzung wäre, wäre es weniger überraschend.

Bei dynamischer Besetzung wird nicht erwartet, dass es zwischen der Quelle und dem Zieltyp gemeinsam ist. Ein solches "Vermutung" hätte also aufgetreten sein, aber dann ist es nicht rechtmäßig.

Welcher Compiler ist das?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top