首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于模版与虚承袭的不解

2012-09-10 
关于模版与虚继承的不解C/C++ codetemplate typename PolicySetter1 DefaultPolicyArgs,typename Polic

关于模版与虚继承的不解

C/C++ code
template < typename PolicySetter1  = DefaultPolicyArgs,typename PolicySetter2 = DefaultPolicyArgs,typename PolicySetter3 = DefaultPolicyArgs,typename PolicySetter4 = DefaultPolicyArgs >class BreadSlicer {public:    typedef PolicySelector<PolicySetter1, PolicySetter2, PolicySetter3, PolicySetter4> Policies;    BreadSlicer()    {    }    void print()    {        typename Policies::P3::Print();    }};class DefaultPolicies {public:    typedef DefaultPolicy1 P1;    typedef DefaultPolicy2 P2;    typedef DefaultPolicy3 P3;    typedef DefaultPolicy4 P4;};class DefaultPolicyArgs : virtual public DefaultPolicies {};template <typename Policy>class Policy3_is : virtual public DefaultPolicies {public:    typedef Policy P3;};


我想问下为什么要从DefaultPolicyArgs虚继承DefaultPolicies,我知道解决二义性,我搞不懂解决谁与谁的二义性,麻烦懂的解释下,谢谢了

[解决办法]
首先 你的例子还没有涉及到2义性 只有当 你有一个类 同时继承与 DefaultPolicyArgs 和 Policy3_is 
的时候才会有二义性的问题 这个时候 DefaultPolicyArgs 和 Policy3_is 就需要虚继承与DefaultPolicies 

然后 模板和虚继承是2码事情 毫无关系 请别搞混 

最后 你这个例子不知道你从哪里弄来的 这个例子明显对于初学者在理解 模板和虚继承毫无帮助 初学者需要的例子是 简单明了的 这个例子太混了
[解决办法]
探讨

我自己搞懂了,是C++ templateS 第十六章的例子了!散分!!

[解决办法]
探讨

我自己搞懂了,是C++ templateS 第十六章的例子了!散分!!

[解决办法]
我靠,这个例子好难懂 啊,typedef PolicySelector<PolicySetter1, PolicySetter2, PolicySetter3, PolicySetter4> Policies;这个PolicySelector是什么东西?
探讨

我自己搞懂了,是C++ templateS 第十六章的例子了!散分!!

[解决办法]
唉,搞不懂,老老实实接分。。。
[解决办法]
探讨

我自己搞懂了,是C++ templateS 第十六章的例子了!散分!!

[解决办法]
接分!为了节省内存空间和解决二义性
[解决办法]
C++TEMPLATES ~楼主对于模板已经看得 蛮深了么~

热点排行