如果我有一个带有 2 个必需参数和 4 个可选参数的构造函数,那么如果我使用默认参数(我不喜欢它,因为它很差),我如何避免编写 16 个构造函数,甚至是 10 个左右的构造函数自我文档)?是否有任何使用模板的惯用语或方法可以用来使其不那么乏味? (并且更容易维护?)
您可能感兴趣命名参数惯用语 https://isocpp.org/wiki/faq/ctors#named-parameter-idiom.
总而言之,创建一个类来保存要传递给构造函数的值。添加一个方法来设置每个值,并让每个方法执行return *this;
在最后。在你的类中有一个构造函数,它接受这个新类的常量引用。可以像这样使用:
class Person;
class PersonOptions
{
friend class Person;
string name_;
int age_;
char gender_;
public:
PersonOptions() :
age_(0),
gender_('U')
{}
PersonOptions& name(const string& n) { name_ = n; return *this; }
PersonOptions& age(int a) { age_ = a; return *this; }
PersonOptions& gender(char g) { gender_ = g; return *this; }
};
class Person
{
string name_;
int age_;
char gender_;
public:
Person(const PersonOptions& opts) :
name_(opts.name_),
age_(opts.age_),
gender_(opts.gender_)
{}
};
Person p = PersonOptions().name("George").age(57).gender('M');
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)