【发布时间】:2017-05-18 00:29:27
【问题描述】:
所以我初始化了一个多项式数组。
Polynomial* pArray;
pArray = new Polynomial[size];
for (int r = 0; r < size; r++){
pArray[r] = Polynomial(p.size);
}
当我改变 pArray 中任何多项式的系数时,它都会改变所有的系数。
pArray[1].coefficients[0] = 12;
cout << pArray[1].coefficients[0] << "\n";
//print coefficients
for (int i = 0; i < size; i++){
for (int j = 0; j < p.size; j++){
cout << pArray[i].coefficients[j] << " ";
}
输出:
12 0 12 0 12 0
我不希望这种情况发生。当我设置一个多项式的系数时,我不希望它影响其他的。我该怎么做?
【问题讨论】:
-
显示
class Polynomial的定义。p是什么? -
我敢打赌这是Rule of Three违规。
pArray[r] = Polynomial(p.size)行在一个可能不支持它的类上调用默认赋值或复制构造,尽管它管理自己的内存。 -
嗨,看看minimal reproducible example 并尝试清理一下问题
标签: c++ arrays object static instantiation