我正在开展更大的任务 - 一个虚构的网上银行数据库。所有人都很好,只需要能够响应这样的电话:
bank.Account("123456").Balance();
bank是类Bank的一个实例,它持有类Account的数组(是的,我被禁止使用大部分STL)。
思考:我需要一个功能帐户&类Bank中的Account(const char *)将成为类Account的友元函数,然后可以调用Account类中声明的Balance函数。 我这样做了吗?我并不是真的要求你为我编写代码,我只是想知道我是否朝着正确的方向前进。感谢。
答案 0 :(得分:2)
我需要一个功能帐户&类Bank中的Account(const char *)将成为类Account的友元函数,然后可以调用Account类中声明的Balance函数。我这样做了吗?
您不需要任何friend
课程或功能,只需制作获取者public
:
class Bank {
public:
Account & Account ( const char * );
};
class Account {
public:
Balance& Balance();
};
答案 1 :(得分:1)
标题中的伪代码可能应为object.MemberFunction1(arguments).MemberFunction2()
。它没关系,它会正常工作。
如果MemberFunction1
返回一个对象或对象的引用,则可以链接更多对返回对象(或引用)的调用。如果他们没有尝试访问和非公开成员,那么这些课程就不必成为朋友。
实际上,如果返回的对象包含一个方法,而该方法又返回了一个对象,那么你可以拥有
object.MemberFunction1(arguments).MemberFunction2().MemberFunction3();
依旧等等。
答案 2 :(得分:1)
是的,这是正确的方向。您的Bank类需要一个公共方法
Account& Account (const char*);
您的帐户类需要公共功能
int Balance();
实际上你不需要“朋友”来访问这些方法,它们只需要公开。
请注意您的帐户方法。如果您输入的帐户名称不存在,您会返回什么?也许你应该在这种情况下返回一个空的Account对象(虽然需要成为你的Bank类的成员)。在这种情况下,在调用Balance()之前,应检查返回的Account对象是否有效。