只有在具有value_semantic的情况下,才能将通知程序用于解析选项.给定通知程序自动处理无值选项的最佳方法是什么?
简单的方法是使用隐式赋值创建一个虚拟value_semantic,这样用户就可以传递没有值的选项.这导致明确提供值的可能性.如果提供了值,则可以添加运行时检查并抛出错误.
更新:但是,这在位置选项存在的情况下不起作用,因为位置选项的值可以遵循无值选项,将异常作为给定值给出它.
在我的代码中,我发现使用类似mixin的继承来组合具有不同块的对象是有用的.我有:
class Name
{
public:
typedef int32_t value_type;
public:
// ctors and dtors
void set_value(value_type value) { value_ = value; }
const value_type& value() const { return value_; }
private:
value_type value_;
};
class NamedObject
{
public:
void set_name(const Name& name) { name_ = name; }
const Name& name() const { return name_; }
protected:
// ctors and dtors
private:
Name name_;
};
Run Code Online (Sandbox Code Playgroud)
我使用这种基类为对象提供具有预定义非虚拟功能的属性:
class MyObject: public NamedObject, public HasZlevel {
// functionality that is not connected with NamedObject and …Run Code Online (Sandbox Code Playgroud)