Pregunta

Tengo una clase que se define como la siguiente:

template <class WidgetType>
class CometWidget : public WidgetType;

Dentro de una función que estoy haciendo esto:

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

y resuelve el tipo CometWidget, cumple y funcionar correctamente.
Las carreras de código dentro de la clase CometWidget.

¿Cómo diablos sucede esto?
¿Por qué es así? En caso de que incluso compilar?

¿Fue útil?

Solución

Si está dentro de la declaración de CometWidget entonces no es necesario para calificar explícitamente la plantilla (o cualquier término que se utiliza para decir CometWidget<...>).

Otros consejos

muy interesante. Me parece como un error de compilador interesante.

Es posible deducir el argumento correcto de la CometWidget <> plantilla - de la misma manera se puede deducir de los parámetros de plantilla en función de la lista de argumentos. Si sería vaciado estático, sería menos sorprendente.

Con elenco dinámico, hay poca espera que sea en común entre la fuente y el tipo de destino. Así, por ejemplo "adivinar" podría haber ocurrido, pero entonces no es un ser que le corresponde.

¿Qué compilador es esto?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top