Saya tahu mungkin membuat fungsi templat:
template<typename T>
void DoSomeThing(T x){}
dan dimungkinkan untuk membuat kelas templat:
template<typename T>
class Object
{
public:
int x;
};
tetapi apakah mungkin untuk membuat kelas tidak di dalam template, dan kemudian membuat fungsi di kelas itu sebagai template? Yaitu:
//I have no idea if this is right, this is just how I think it would look
class Object
{
public:
template<class T>
void DoX(){}
};
atau sesuatu sejauh, di mana kelas bukan merupakan bagian dari templat, tetapi fungsinya?
Lihat di sini: Templat , metode templat , Templat Anggota, Templat Fungsi Anggota
sumber
Ya, fungsi templat anggota sangat legal dan bermanfaat pada banyak kesempatan.
Satu-satunya peringatan adalah bahwa fungsi anggota template tidak bisa virtual.
sumber
Cara termudah adalah dengan meletakkan deklarasi dan definisi dalam file yang sama, tetapi dapat menyebabkan file excutable yang terlalu besar. Misalnya
Selain itu, dimungkinkan untuk menempatkan definisi templat dalam file yang terpisah, yaitu untuk menempatkannya dalam file .cpp dan .h. Yang perlu Anda lakukan adalah secara eksplisit memasukkan contoh template ke file .cpp. Misalnya
sumber