Tengo este codigo:
template <class T>
class MyClass {
public:
template <class U>
void foo() {
U a;
a.invoke();
}
};
Lo quiero en esta forma:
template <class T>
class MyClass {
public:
template <class U>
void foo();
};
template <class T> /* ????? */
void MyClass<T>::foo() {
U a;
a.invoke();
}
¿Cómo puedo hacer esto? ¿Cuál es la sintaxis correcta?
¿Por qué no simplemente decl la función dentro de la clase decl (ver codepad.org/wxaZOMYW )? No puedes mover la función decl fuera del encabezado de todos modos, así que ...
—
hiobs
@hiobs: FWIW, puede mover la declaración a un archivo CPP. Dicho esto, solo he hecho esto una vez para hacer algo de piratería. En ese caso, saber cómo hacer esto es fundamental.
—
Thomas Eding
A veces, se debe mover la definición de la función fuera de la clase, después de la definición de las dependencias que necesita el cuerpo de la función. Esto sucede cuando la clase A usa la clase B y B también usa A. En ese caso, declara A y B, luego define los métodos A y B.
—
Wheezil