问候,大家!链接方法和临时变量,请澄清
我有一个类接收一个“圆”(例如)的指针,然后通过一些“链接”方法调整其属性。事情是这样的:
class CCircleSetter
{
public:
explicit CCircleSetter(CCirclePtr circle) : m_circle(circle)
{
}
CCircleSetter & Radius(int radius)
{
if (m_circle) m_circle->SetAttribute("radius", radius);
return *this;
}
CCircleSetter & Center(CPoint center)
{
if (m_circle) m_circle->SetAttribute("center", center);
return *this;
}
operator bool() const
{
return (m_circle != NULL);
}
private:
CCirclePtr m_circle;
};
现在我不知道该代码是否是合法与否:
if (CCircleSetter(myCircle).Radius(10).Center(myPoint))
{ ... }
,一方面,我认为临时对象,内部创建的“如果”的表情,会活到这个表达式的结尾。所以,对“Radius”和“Center”的呼叫是合法的。但另一方面,使用对临时变量的引用是一个未定义的行为,在我看来,我正在做这种事情 - 使用(* this),其中“this”是一个临时变量。它给了我一些疑问,请澄清。谢谢!
“的链接方法”:这似乎是尝试[流畅的界面](http://en.wikipedia.org/wiki/Fluent_interface)或许? – 2010-08-10 07:58:44
感谢您的链接。从维基百科:“一个流畅的界面不仅仅需要方法链接”=) – SadSido 2010-08-10 09:10:57