2016-10-01 2 views
-1

Элемент данных недоступен, хотя класс был объявлен как класс друзей. Ошибка: «общая» не была объявлена ​​в этой областинедоступен, хотя класс был объявлен как класс друзей

#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); 
    } 
}; 

ответ

1

Сообщения об ошибке правильно: нет названия total в текущей области. Код должен либо ссылаться на grand_total, который является членом класса Bill, который, в свою очередь, определяет operator+=, который записывается, или он должен обратиться к p.total, чтобы получить доступ к total, который является членом класса Produce.

0

Создание класс A другой класс B не означает, что вы можете просто случайно назвать нестатические члены B изнутри A, не называя экземпляр B для использования.

Какой Produce::total (из потенциально бесконечного) вы хотите, чтобы ваша программа использовала?

Смежные вопросы