作者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/cn.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