访问没有getter功能的私有成员

时间:2015-09-17 19:55:18

标签: c++ arrays class sum

我正在准备考试,而我正试图解决一个我怀疑可能无法解决的问题。

在超市,您购买的每件商品都有名称,成本和数量。

所以老师定义了这个课程:

class items {
public:
    items(string, double, int);
    void InputItems ();  
    void SetCount (int const);
    string GetName () const;
    string toString () const;

private:
    string name;
    double cost;
    int count;
}

但是当你去超市时,你并不总是只买一件商品。你可以买几件物品。所以我们的问题是定义一个类Purchase来处理类型为items的数组。

我这样定义:

class Purchase
{
    private:
        items *arr;
        int max_items,current_items;
    public:
        Purchase(int New_max_items){
            max_items=New_max_items;
            current_items=0;
            arr= new items("",0,0)[max_items];
        }
        void AddItem(items const newitems);
        items RemoveItem(string const name);
        int Find(string const name);
        int const sum();
        int get_now();
        items &operator[](int) const;
}

该练习要求我实施items &operator[](int) const;int const sum();。我设法实现了运营商:

goods & Purchase::operator[](int i) const
{
    if ((i>=0)&&(i<current_items))
        return arr[i];
}

没问题。

问题在于能够将购买的全部费用相加。

我无法直接访问arr[i].costarr[i].count,因为他们是班级Items的私人成员,因为老师,我无法间接获得他们不包括班级Items中的班级成员的getter函数。

是否可以编写一个程序,在不更改班级Items的情况下返回整个购买的总和?

2 个答案:

答案 0 :(得分:0)

也许目的是在项目名称和成本的类外面有一个表。 因此,您可以调用GetName()和GetCount()并查找外部表(地图或哈希表)中每个项目的成本。

答案 1 :(得分:-1)

class Purchase  
{  
    private:  
        items *arr;  
        int max_items,current_items;  
        **int sum;**  
    public:  
        Purchase(int New_max_items){  
            max_items=New_max_items;  
            current_items=0;  
            arr= new items("",0,0)[max_items];  
            **sum = 0;**  
        }  
.  
.  
.  

AddItems()中增加价格,并在RemoveItems()递减它;)