我有一个类,它从另一个类创建一个对象数组(数组类是朋友)
class vector_XXL
{
int i=0,n=0;
XXL_nr *XXLvector;
public:
vector_XXL(int y)
{
n = y;
XXLvector = new XXL_nr[y];}
n是数组的大小。 XXL_nr是创建表示为链表的大数字的类(每个数字在列表上有一个点)
我希望来自2个数组对象的每2个数字的乘积位于相同位置。因此,例如,v [i] * d [i],对于i = 0,n;
这是应该这样做的功能,但它无法正常工作:
void produs_scalar(vector_XXL A)
{
XXL_nr temp(2),temp1(2),temp2(2),result(2);
vector_XXL vector_result(n);
temp1 = this->XXLvector[0];
temp2 = A.XXLvector[0];
temp1.addition(temp2);
for(i=0;i<n;i++)
{ temp = this->XXLvector[i].product(A.XXLvector[i]);
vector_result.XXLvector[i] = temp;
}
for(i=0;i<n;i++)
result= temp.product(vector_result.XXLvector[i]);
result.print();
}
我使用temp1和temp2来测试我是否可以在2个XXL_nr变量上使用product方法(在XXL_nr类中定义)。但结果是一样的。问题是,在第一个for循环中,它执行产品,它返回`this-&gt; XXLvector [i] .product(A.XXLvector [i])的正确答案;但它没有移动到第i个位置,整个程序只是在产品方法返回后挂起。 现在,我相信数组是问题,因为我尝试不使用数组(只是XXL_nr类型)来做产品,并且该方法不再挂起。例如:
void produs_scalar()//vector_XXL &A)
{
XXL_nr B(2), C(2), D;
cout<<"insert number B";
cin>> B;
cout<<"number C";
cin>>C;
D=B.product(C);
cout<<D;
在这里,一切正常。产品方法返回,代码附加到cout<<D;
。
我读到一个主题,当程序挂起时,这是因为某些内容指向随机内存并且程序只是挂起,但我不知道如何调试它或如何验证是否是这种情况。
答案 0 :(得分:0)
产品中“temp”的分配不正确。在数组演示中,您将“product”的结果分配给XXL_nr(2)类型,而在您的示例中没有数组,您将结果分配给XXL_nr类型。如果没有XXL_nr的代码,我不清楚正在创建的类型。