该题是求两个集合的并集。
报错原因已在代码中标注,有点看不懂报错原因。
那应该怎么写呢?
用代码块功能插入代码,请勿粘贴截图
我想要达到的结果
#include<iostream>
using namespace std;
class CSet
{
public:
int n;
int* data=NULL ;
CSet(int n) :n(n)
{
data = new int[n];
}
CSet operator+(CSet& set);
int datain();
};
int CSet::datain()
{
int a[100];
data = a;
for (int i = 0; i < n; i++)
{
cin >> data[i];
}
return 0;
}
CSet CSet :: operator+(CSet& set)//求出A和B的并集
{
int m;
set.data = new int[m];
for (int i = 0; i < n; i++)//向set.data[m]中补充
{
for (int j = 0; j < m; j++)
{
if (data[i] == set.data[j])
{
continue;
}
}
set.data[m++] = data[i];//错误原因:写入set.data时缓冲区溢出
}
for (int i = 0; i < m; i++)
{
cout << set.data[i] << " " << endl;//错误原因:正在从set.data读取无效数据
}
return set;
}
int main()
{
int n1, n2;
cin >> n1 >> n2;
CSet A(n1), B(n2);
A.datain();
B.datain();
A.operator+(B);
return 0;
}