0

Budget と AuxiliaryOffice の 2 つのクラスがあり、フレンド機能を使用しています。Budget のプライベート メンバー corpDivision にアクセスします。

auxil.h

#ifndef AUXIL_H
#define AUXIL_H
class Budget;
class AuxiliaryOffice
{
private:
    double auxBudget;
public:
    AuxiliaryOffice(){auxBudget=0.0;}
    double getDivisionBudget()const{return auxBudget;}
    void addBudget(double b, Budget &);
};
#endif

予算.h

#include"auxil.h"
#ifndef BUDGET_H
#define BUDGET_H
class Budget
{
private:
    static double corpDivision;
    double divisionBudget;
public:
    Budget(){divisionBudget=0.0;}
    void addBudget(double b){divisionBudget+=b; corpBudget+=b;}
    double getDivisionBudget()const{return divisioBudget;}
    double getCorpDivision()const{return corpDivision;}
    friend AuxiliaryOffice::addBudget(double,Budget &);
};
#endif

auxil.cpp

#include"auxil.h"
#include"budget.h"

void AuxiliaryOffice::addBudget(double b, Budget& div)
{
    auxBudget+=b;
    **div.corpDivision+=b;** //this line it is the problem. 
}

div.corpDivision+=b -> Budget::corpDivision にアクセスできません

4

1 に答える 1

0

サンプルのいくつかの問題を修正する必要がありましたが、いくつかの試行の後、機能する可能性があります。

class Budget;
class AuxiliaryOffice
{
private:
    double auxBudget;
public:
    // It would be a good idea to add spaces to your code to help other reading it
    AuxiliaryOffice() { auxBudget = 0.0; }
    double getDivisionBudget() const { return auxBudget; }
    void addBudget(double b, Budget &);
}; // so far, so good    

class Budget
{
private:
    static double corpDivision;
    double divisionBudget;
    double corpBudget; // ** this was missing **

public:
    Budget() { divisionBudget = 0.0; }
    void addBudget(double b) { divisionBudget += b; corpBudget+=b; }
    double getDivisionBudget() const { return divisionBudget; }
    double getCorpDivision() const { return corpDivision; }

    // ** note the "void" here, missing from your sample
    friend void AuxiliaryOffice::addBudget(double, Budget&);
};

// this is also required to compile properly, usually in a Budget.cpp file
double Budget::corpDivision;
于 2012-11-21T14:41:21.410 に答える