关于模版与虚承袭的不解
关于模版与虚继承的不解C/C++ codetemplate typename PolicySetter1 DefaultPolicyArgs,typename Polic
关于模版与虚继承的不解
C/C++ codetemplate < 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码事情 毫无关系 请别搞混
最后 你这个例子不知道你从哪里弄来的 这个例子明显对于初学者在理解 模板和虚继承毫无帮助 初学者需要的例子是 简单明了的 这个例子太混了
[解决办法][解决办法][解决办法]我靠,这个例子好难懂 啊,typedef PolicySelector<PolicySetter1, PolicySetter2, PolicySetter3, PolicySetter4> Policies;这个PolicySelector是什么东西?
[解决办法]唉,搞不懂,老老实实接分。。。
[解决办法][解决办法]接分!为了节省内存空间和解决二义性
[解决办法]C++TEMPLATES ~楼主对于模板已经看得 蛮深了么~