即使已将类声明为友元类,也无法访问数据成员

时间:2016-10-01 16:02:11

标签: c++

即使已将类声明为友元类,也无法访问数据成员。错误:'总计'未在此范围内声明

#include <iostream>
#include <iomanip>
using namespace std;

class Produce
{
    private:
        float total;
    public:
        Produce()
        {
            total=0;
        }
        friend class Bill;
};
class Bill
{
    private:
        float grand_total;
    public:
    Bill()
    {
        grand_total=0;
    }
    Bill operator+=(const Produce &p)
    {
        return Bill(total+p.total);
    }
};

2 个答案:

答案 0 :(得分:1)

错误消息正确:当前范围中没有名称total。代码应该引用grand_total,它是类Bill的成员,而后者又定义了正在编写的operator+=,或者应该引用p.total来访问该total成员的Produce

答案 1 :(得分:0)

让班级A成为班级B的朋友并不意味着您可以在B内随机命名A的非静态成员,而无需命名要使用的B个实例。

您希望程序使用哪个Produce::total(可能无限)?