对象数组无法正常工作

时间:2015-04-26 11:12:10

标签: c++ arrays object linked-list

我有一个类,它从另一个类创建一个对象数组(数组类是朋友)

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;

我读到一个主题,当程序挂起时,这是因为某些内容指向随机内存并且程序只是挂起,但我不知道如何调试它或如何验证是否是这种情况。

1 个答案:

答案 0 :(得分:0)

产品中“temp”的分配不正确。在数组演示中,您将“product”的结果分配给XXL_nr(2)类型,而在您的示例中没有数组,您将结果分配给XXL_nr类型。如果没有XXL_nr的代码,我不清楚正在创建的类型。