作者loveflames (咕啾咕啾魔法陣)
看板C_and_CPP
標題Re: [問題] class判斷問題
時間Fri May 12 11:54:09 2017
class implB{
public:
void f();
};
template<T>
class A:{
public:
/*
為方便理解,函數定義在class內
這樣有T的定義相依性
*/
A():p(new T){...}
void f(){p->f();}
private:
T * p;
};
class B:public A<implB>{
...
};
類似這樣做,少的部分請自己補上
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.248.56.185
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1494561253.A.EFD.html
※ 編輯: loveflames (60.248.56.185), 05/12/2017 12:10:05
1F:推 cozychocolat: 謝謝您 我會再試試 05/12 15:06
2F:→ hunandy14: 請問~這樣 implB的fun() 怎麼存取 A 的成員 傳this嗎 05/12 22:53
3F:推 LPH66: 其實可以不用分寫一個 implB 出來 05/12 23:29
4F:→ LPH66: 直接繼承 A<B> 即可, 這個寫法叫做 CRTP 05/12 23:29
5F:→ LPH66: 之所以可以不用的原因是寫 template<...> class A 的時候 05/12 23:29
6F:→ LPH66: A 還沒有真正實體化出來, 要到 B 繼承 A<B> 時才會實體化 05/12 23:30
7F:→ LPH66: 而這時 B 已經知道是什麼東西了所以可以用 05/12 23:30
9F:→ loveflames: 原始要求是子類不要有函數 05/13 00:24