Saya memiliki kode ini:
template <class T>
class MyClass {
public:
template <class U>
void foo() {
U a;
a.invoke();
}
};
Saya menginginkannya dalam bentuk ini:
template <class T>
class MyClass {
public:
template <class U>
void foo();
};
template <class T> /* ????? */
void MyClass<T>::foo() {
U a;
a.invoke();
}
Bagaimana saya bisa melakukan ini? Apa sintaks yang benar?
Mengapa tidak melakukan fungsi mendeklarasikan di dalam kelas mendeklarasikan (lihat codepad.org/wxaZOMYW )? Anda tidak dapat memindahkan fungsi deklarasi keluar dari header, jadi ...
—
hiobs
@hiobs: FWIW, Anda dapat memindahkan deklarasi ke dalam file CPP. Meskipun demikian, saya hanya melakukan ini sekali untuk melakukan peretasan. Dalam hal ini, mengetahui cara melakukan ini sangatlah penting.
—
Thomas Eding
Terkadang seseorang harus memindahkan definisi fungsi ke luar kelas, setelah definisi dependensi yang dibutuhkan oleh badan fungsi. Ini terjadi ketika kelas A menggunakan kelas B dan B juga menggunakan A. Dalam hal itu Anda mendeklarasikan A dan B, lalu tentukan metode A dan B.
—
Wheezil