C++ 使用具有基类的friends作为Boost参数
我正在使用教程为扑克牌生成器创建一个命名参数构造函数。教程说要将ArgumentPack放入基类,但我想修改card generator类中的变量。我考虑过这样做:C++ 使用具有基类的friends作为Boost参数,c++,boost,constructor,boost-parameter,C++,Boost,Constructor,Boost Parameter,我正在使用教程为扑克牌生成器创建一个命名参数构造函数。教程说要将ArgumentPack放入基类,但我想修改card generator类中的变量。我考虑过这样做: class CGconstructor_base { public: template<class ArgumentPack> CGconstructor_base(ArgumentPack const& args);/*tutorial says to put code in
class CGconstructor_base {
public:
template<class ArgumentPack>
CGconstructor_base(ArgumentPack const& args);/*tutorial says to put code
in this function */
friend CardGenerator;//so it can modify the variables of CardGenerator
}
class CardGenerator:public CGconstructor_base;
类CGU基{
公众:
模板
CGconstructor_base(ArgumentPack const&args);/*教程说要放置代码
在这个函数中*/
friend CardGenerator;//因此它可以修改CardGenerator的变量
}
类别CardGenerator:公共CGU库;
这是合法的还是有更好的方法操纵CardGenerator中的私有变量并使用Boost参数库?
操作系统:Windows XP Pro,编译器:Visual C++ 2008 Express,Boo: 1.37.0 < P>我想我们需要清理一下。 < L> > P>朋友声明似乎不恰当,从你想要的CG构造函数库可以访问Calter生成器属性:如果是这样,那么朋友声明进入CardGenerator(我说我认为是我的朋友,你不宣称自己是一个我认为是朋友的人)。< /P>
struct CGconstructor_base {
template<class ArgumentPack>
CGconstructor_base(ArgumentPack const& args);/*tutorial says to put code
in this function */
cg_type1 cg_attr1;
cg_type2 cg_attr2;
}; // don't forget this
class CardGenerator:private CGconstructor_base {};
struct-cgu-base{
模板
CGconstructor_base(ArgumentPack const&args);/*教程说要放置代码
在这个函数中*/
cg_类型1 cg_属性1;
cg_类型2 cg_属性2;
}; // 别忘了这一点
类CardGenerator:私有CGU基{};
我真想知道为什么boost选择了“继承”而不是(我认为)更干净的组合。滥用继承(并要求多重继承)要容易得多。。。不过,我想这本书值得一读。谢谢!我真不敢相信我把朋友声明搞砸了。