C++11 什么情况下使用这种语法:thing.Foo().Bar(this)

C++11 什么情况下使用这种语法:thing.Foo().Bar(this),c++11,syntax,C++11,Syntax,有人能给我举个例子,说明这个语法在代码中的位置吗 thing.Foo().Bar(this) 从外观上看,我看到一个调用函数的对象调用了另一个函数 我显然不知道它是怎么工作的。如果你有一点想法,我会很感激你的建议。谢谢 此代码可以在类的任何非静态成员函数中找到。thing的Foo()函数返回一个类的对象,该类的成员函数Bar将指向当前对象(this)的指针作为参数。这是许多可能的情况之一: struct somethingelse { void SomeOtherMethod()

有人能给我举个例子,说明这个语法在代码中的位置吗

thing.Foo().Bar(this)
从外观上看,我看到一个调用函数的对象调用了另一个函数


我显然不知道它是怎么工作的。如果你有一点想法,我会很感激你的建议。谢谢

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

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

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

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

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

    foo m_foo;
};

让这有点不寻常的是,类和方法命名的命名约定与事实上的相反,在事实上,类是大写的,方法是驼峰式的。

顺便说一句,你的答案对我来说非常有意义。非常感谢。是否确实要返回
ClassB::Foo()
ClassA
对象的副本如果是这样,这没关系。@marko这是个好问题。我忘了让ClassC继承ClassA。这样,ClassA将被传递一个指向ClassC实例的指针。这很令人困惑,但我想尝试一下。我相信这将是我正在从事的项目的关键。每个人在开始OO编程时犯的新手错误是过度使用继承。你的作文通常会更好。想详细说明一下吗?我实际上是想限制继承。作文在这里有什么帮助?有趣的方法。谢谢你的贡献。