什么情况使用这种语法:thing.Foo()。Bar(this)

时间:2016-03-12 19:08:03

标签: c++11 syntax

有人能告诉我这个语法在代码中出现的位置示例吗?

thing.Foo().Bar(this)

从它的外观来看,我看到一个对象调用一个调用另一个函数的函数?

我显然不知道它是如何运作的。如果您有任何想法,我将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:2)

这是许多可能的情况之一:

struct somethingelse
{
    void SomeOtherMethod()
    {
        thing.Foo().Bar(this);
    }
};

struct foo 
{
    void Bar(somethingelse *pSomethingElse);
};

struct thing
{
    foo &Foo() {return m_foo;}

    foo m_foo;
};

使这有点不寻常的是,类和方法命名的命名约定与类的大写和方法的事实相反。

答案 1 :(得分:1)

此代码可以在类的任何非静态成员函数中找到。 Foo() thing函数返回类的对象,其成员函数Bar将指向当前对象(this)的指针作为参数。