Object.memberFunction(argument).成员函数();- 我只是不明白这个

Object.memberFunction(argument).MemberFunction(); - I just don't get this

本文关键字:明白 argument memberFunction 成员 函数 Object      更新时间:2023-10-16

我正在做一项更大的任务——一个虚构的网上银行数据库。一切都好,只是它需要能够响应这样的呼叫:

bank.Account("123456").Balance();

bank是bank类的一个实例,它持有Account类对象的数组(是的,我被禁止使用大多数STL)。

想法:我需要一个功能帐户&Bank类中的Account(const char*),它将是Account类的友元函数,然后可以调用Account类中声明的Balance函数。我这样做对吗?我并不是真的要求你为我写代码,我只想知道我是否朝着正确的方向前进。谢谢

我需要一个函数Account&Bank类中的Account(const char*),它将是Account类的友元函数,然后可以调用Account类中声明的Balance函数。我这样做对吗?

您不需要任何friend类或函数,只需使getter public:

class Bank {
public:
    Account & Account ( const char * );
};
class Account {
public:
    Balance& Balance();
};

是的,这是正确的方向。您的Bank类需要一个公共方法

Account& Account (const char*);

您的Account类需要公共函数

int Balance();

事实上,你不需要"朋友"来访问这些方法,它们只需要是公共的。

不过要小心你的账户方法。如果您输入的帐户名称不存在,您将返回什么?在这种情况下,也许您应该返回一个空的Account对象(不过需要是Bank类的成员)。在这种情况下,您应该在调用Balance()之前检查返回的Account对象是否有效。

标题中的伪代码可能应该是object.MemberFunction1(arguments).MemberFunction2()。一切都好,一切都会好起来的。

如果MemberFunction1返回一个对象或对对象的引用,则可以对返回的对象(或引用)进行更多调用。如果这些类不试图访问和非公开成员,它们就不必是朋友。

事实上,如果返回的对象包含一个方法,而该方法又返回了一个对象,那么您就可以使用

object.MemberFunction1(arguments).MemberFunction2().MemberFunction3();

等等。