我正在处理 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)