我偶然发现了这个令我困惑的代码:
SomeObject->SomeFunction()->AnotherFunction(...);
调用->
成员函数后第二个箭头SomeFunction()
的含义是什么?
P.S。 SomeFunction()
函数在类中声明如下:
const int * SomeFunction() {return ipValue;}
答案 0 :(得分:3)
SomeFunction()
返回一个指向一个类的指针,该类调用了其中一个方法(称为AnotherFunction
)。如果你把它分解,它可能看起来像这样:
Object* obj = SomeObject->SomeFunction();
obj->AnotherFunction();
如前所述,如果SomeFunction()返回一个int *,则无效。
答案 1 :(得分:3)
这是编译错误。
int
是基本类型,而不是类,因此您无法在其上调用方法。
此技术称为方法链接。如果成员函数返回对象或指向对象的指针,则可以调用后续方法。在您的情况下,它不会编译,因为该方法返回int
。但是,类似下面的内容可行:
class A
{
public:
A* foo();
A* goo();
};
A* a = new A;
a->foo()->goo()->foo();
答案 2 :(得分:1)