我有一个抽象类NumericalObject和它的一些非抽象子类。然后我有一个Product类,它是QList的子类。现在我想定义两个产品的乘法,它们应该获取两个乘积的内容(指向数据,而不是指针),在内存中创建它的副本,并用指向复制数据的指针填充结果。我尝试使用malloc和memcpy,但复制的数据不正确:
friend Product operator *(Product a, Product b)
{
Product c;
for (int i=0; i<a.size(); i++){
NumericalObject* p=(NumericalObject*) malloc(sizeof(*a.at(i)));
memcpy(p,a.at(i),sizeof(*a.at(i)));
c.append(p);
}
for (int i=0; i<b.size(); i++){
NumericalObject* p=(NumericalObject*) malloc(sizeof(*b.at(i)));
memcpy(p,b.at(i),sizeof(*b.at(i)));
c.append(p);
}
return c;
}