У мене є цей код:
template <class T>
class MyClass {
public:
template <class U>
void foo() {
U a;
a.invoke();
}
};
Я хочу це у такій формі:
template <class T>
class MyClass {
public:
template <class U>
void foo();
};
template <class T> /* ????? */
void MyClass<T>::foo() {
U a;
a.invoke();
}
Як я можу це зробити? Що таке правильний синтаксис?
Чому б просто не зробити функцію decl всередині класу decl (див. Codepad.org/wxaZOMYW )? Ви не можете перемістити функцію відхилення функції із заголовка, тому ...
—
hiobs
@hiobs: FWIW, ви можете перемістити декларацію у файл CPP. Це сказав, що я лише один раз це робив, щоб зробити хакерство. У цьому випадку важливо знати, як це зробити.
—
Томас Едінг
Іноді потрібно перенести визначення функції за межі класу, після визначення залежностей, необхідних тілу функції. Це відбувається, коли клас A використовує клас B, а B також використовує A. У цьому випадку ви оголошуєте A і B, а потім визначаєте методи A і B.
—
Wheezil