我正在处理 C++ 硬件分配,所以我会尽量不发布太多代码,我们正在处理的内容如下:我们有一个包含公共交换函数的类(以及插入和删除函数等)和一个私有结构数组来存储数据。
就像是:
Class set
public:
set(int dimension);
insert();
delete();
swap(set& swapset);
private:
struct *set;
现在我们主要设置了 s1 和 s2,当我像这样运行交换时:s1.swap(s2); s1 和 s2 将交换整个数组,我们需要在交换 s1 为 [5] 和 s2 后保持每个数组的维数(因此,如果 s1 设置=new set[3] 并且 s2 设置=new set[5])是 [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)