从派生的朋友函数调用受保护的函数

时间:2015-06-10 21:57:52

标签: c++ oop friend derived-class

我有一个基类mysql --skip-column-names --raw mydatabase -e "SELECT CONCAT('CREATE PROCEDURE `', specific_name, '`(', param_list, ') AS ') AS `stmt`, body_utf8 FROM `mysql`.`proc` WHERE `db` = 'mydatabase' AND specific_name = 'myprocedure';" 1> myprocedure.sql 和一个派生类AnimalLion有一个名为Animal的受保护函数。我想从eat()中定义的朋友函数中调用eat(),但是当它不能编译时:

Lion

为什么我无法从error: call to non-static member function without an object argument 的朋友那里呼叫受保护的功能?我有解决办法,但我无法弄清楚为什么朋友不能打电话给Lion。如果我使用eat()Animal::eat似乎无关紧要,我会得到同样的错误。想法?

Lion::eat

1 个答案:

答案 0 :(得分:1)

friend函数是非成员函数,可以访问类的私有成员。但您仍需提供访问数据成员的对象详细信息。

eat功能的使用必须与object_name.eat()功能中的feed类似。