小编Rig*_*iga的帖子

boost-program-options:没有值的选项的通知程序

只有在具有value_semantic的情况下,才能将通知程序用于解析选项.给定通知程序自动处理无值选项的最佳方法是什么?

简单的方法是使用隐式赋值创建一个虚拟value_semantic,这样用户就可以传递没有值的选项.这导致明确提供值的可能性.如果提供了值,则可以添加运行时检查并抛出错误.

更新:但是,这在位置选项存在的情况下不起作用,因为位置选项的值可以遵循无值选项,将异常作为给定值给出它.

c++ boost-program-options

24
推荐指数
2
解决办法
1万
查看次数

继承与聚合和"has-a"vs"is-a".

在我的代码中,我发现使用类似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)

c++ inheritance design-patterns multiple-inheritance

5
推荐指数
1
解决办法
5091
查看次数