#c
#c
Вопрос:
Элемент данных недоступен, даже если класс был объявлен как дружественный класс. ошибка: ‘total’ не был объявлен в этой области
#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 amp;p)
{
return Bill(total p.total);
}
};
Ответ №1:
Сообщение об ошибке правильное: total
в текущей области нет имени. Код должен либо ссылаться на grand_total
, который является членом класса Bill
, который, в свою очередь, определяет operator =
записываемый, либо он должен ссылаться на p.total
, чтобы получить доступ к total
члену класса Produce
.
Ответ №2:
Превращение класса A
в друга класса B
не означает, что вы можете просто случайным образом называть нестатические члены B
изнутри A
, не называя экземпляр B
для использования.
Какой Produce::total
(из потенциально бесконечных) вы хотите, чтобы ваша программа использовала?