[我不知道,这适用于你,但这是有点多在评论写作。]
用C链运营++的常用方法是实际链中的通话,类似以及在读/写流时如何将输入/输出操作符链接起来。
比方说你有一个对象O
,你可以执行操作a
,b
和c
上。然后,你可以设计的操作(函数)的引用返回this
(即return *this
),你可以为
O.c().a().b();
这是链如何操作(函数调用)在C++中通用的解释链上的呼叫一起。对于您的情况,您可能需要将数据包装在一个类中,该类充当实际操作的简单单层代理。
你可以做这样的事情(例如代码而已,不相关的代码):
class integer_ops
{
public:
integer_ops(int start_value = 0) : value(start_value)
{ }
integer_ops& add(const int v)
{
value += v;
return *this;
}
integer_ops& sub(const int v)
{
value -= v;
return *this;
}
integer_ops& mul(const int v)
{
value *= v;
return *this;
}
integer_ops& div(const int v)
{
value /= v;
return *this;
}
int value() const
{
return value;
}
private:
int value;
};
上述类包装的int
值和简单的算术运算。它可以用作:
int result = integer_ops(5).mul(2).add(10).div(2).sub(2).value();
上述代码将等于
int result = (((((5) * 2) + 10)/2) - 2);
与result
被分配在两种情况下,整数值8
。
我希望你了解一般原则,并能弄清楚如何将它应用到你的案例中。
谢谢你的时间,约阿希姆。对于简单的操作,这种方法可能工作得很好,但是在大多数情况下,要应用的转换是相当大的并且彼此非常不相交。将他们全部安置在同一个班级看起来似乎过分了。 – 2015-04-02 14:49:54