Usando UML, ¿cómo puedo representar A<Foo>
en el siguiente código?¿Cómo puedo representar la herencia de un parámetro de plantilla en UML?
template< class T >
class A : public T
{
/* ... */
};
class Foo { };
A<Foo> a_foo;
algo como esto (disculpas por la mala arte ASCII ... y para Jon Skeet) es mi primera suposición, pero sospecho que no es correcto.
________________
| |
| |
| Foo |
| |
|______________|
/:\ /|\
«bind»(Foo) : |
: | .......
__:____|___: T :
| :.....:
| |
| A |
| |
|______________|
¿No describe el CRTP una clase que hereda de una clase de plantilla, donde el heredero se pasa a sí mismo como parámetro de plantilla? En este caso, el enlace de generalización debe tener la dirección opuesta. La dependencia de enlace que se muestra es correcta en mi humilde opinión. –
@ g-makulik - estás en lo correcto (como señaló Luchiane a continuación). He modificado el título. – PaulH
@Luc Touraille - buen título. :) – PaulH