在同一个类中更改私有变量?

时间:2013-01-22 06:57:25

标签: c++ arrays dynamic

我正在进行c ++ hw赋值,所以我尽量不要发布太多代码,我们正在做的工作如下:我们有一个包含公共交换函数的类(以及插入和删除函数)和这样的)以及用于存储数据的私有struct数组。

类似的东西:

Class set
public:
set(int dimension);
insert();
delete();
swap(set& swapset);
private:
struct *set;

现在在main中我们设置了s1并设置了s2,当我像这样运行swap时:s1.swap(s2); s1和s2将交换整个数组,我们需要保持每个数组的维度(所以如果s1设置=新设置[3]并且s2设置=新设置[5])交换后s1为[5]和s2是[3]

我能够使用插入和删除函数来交换数组,当它是固定维度但是我无法弄清楚如何在交换函数期间更改数组的维度,因为* set是私有的吗?

提前感谢所有帮助!

编辑:我添加了部分代码,因为我无法正确解释:

  set::set()
    :counter(0),m_size(0),flag(0)
    {
    m_set=new set[DEFAULT_MAX_ITEMS];
    swapper=new set[DEFAULT_MAX_ITEMS];
    maxsize=DEFAULT_MAX_ITEMS;
    }
    set::set(int x)
    :counter(0),m_size(0),flag(0)
    {
    m_set=new set[x];
    swapper=new set[x];
    maxsize=x;
    }

void set::swap(set& other)
        {

    // Exchange the contents of this set with the other one.
        int tempmaxsize=maxsize;
        int tempcounter=counter;
        int tempmsize=m_size;

        swapper=m_set;
        m_set=other.m_set;

        other.m_set=swapper;

        m_size=other.m_size;
        counter=other.counter;
        maxsize=other.maxsize;

        other.counter=tempcounter;
        other.m_size=tempmsize;
        other.maxsize=tempmaxsize;
        }

private:

    struct set
        {
        ItemType entry;
        int count;
        };
    int maxsize;
    set* m_set;
    int m_size;
    int counter;
    int flag;
    set* swapper;

错误代码是这样的: 调试断言失败了! 表达:_block_type_is_valid(phead-> nblockuse)

1 个答案:

答案 0 :(得分:0)

实际上,更改数组大小应该是swap函数的一部分,因此应该在类方法中完成。由于它是一种类方法,因此可以访问私有成员。