Eu tenho este código:
template <class T>
class MyClass {
public:
template <class U>
void foo() {
U a;
a.invoke();
}
};
Eu quero desta forma:
template <class T>
class MyClass {
public:
template <class U>
void foo();
};
template <class T> /* ????? */
void MyClass<T>::foo() {
U a;
a.invoke();
}
Como posso fazer isso? Qual é a sintaxe certa?
Por que não apenas fazer a função decl dentro da classe decl (consulte codepad.org/wxaZOMYW )? Você não pode mover a função decl para fora do cabeçalho de qualquer maneira, então ...
—
hiobs
@hiobs: FWIW, você pode mover a declaração para um arquivo CPP. Dito isso, só fiz isso uma vez para fazer um pouco de hackeagem. Nesse caso, saber fazer isso é essencial.
—
Thomas Eding
Às vezes, é necessário mover a definição da função para fora da classe, após a definição das dependências necessárias para o corpo da função. Isso acontece quando a classe A usa a classe B e B também usa A. Nesse caso, você declara A e B e define os métodos A e B.
—
Wheezil