2015-04-26 3 views
0

У меня есть класс, который создает массив объектов из другого класса (класс массива друг)Массив объектов не работает правильно

class vector_XXL 
{ 
     int i=0,n=0; 
     XXL_nr *XXLvector; 

public: 
    vector_XXL(int y) 
    { 
     n = y; 
     XXLvector = new XXL_nr[y];} 

п размер массива. 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, чтобы проверить, могу ли я использовать метод продукта (определенный в классе XXL_nr) на 2 XXL_nr. Но результат тот же. Проблема в том, что в первом цикле он выполняет продукт, он возвращает правильный ответ для этого:> 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; 

Здесь все работает нормально. продукт methos возвращается, а код переходит в cout<<D;.

Я читал по одной теме, что, когда программа зависает, это происходит из-за чего-то, указывающего на случайную память, и программа просто зависает, но я понятия не имею, как отлаживать это или как проверить, так ли это.

ответ

0

Неверное присвоение «temp» продукта. В демонстрации массива вы присваиваете результат «product» типа XXL_nr (2), в то время как в вашем примере без массивов вы присваиваете результат типу XXL_nr. Без кода для XXL_nr Я не знаю, какой тип создается.

+0

Я понимаю, о чем вы говорите. Вы правы ... без класса XXL_nr не так много, что кто-либо может вывести, но у меня есть только 1k строк кода только на этом классе, и я не думаю, что это поможет. Спасибо, хотя, я посмотрю, что я могу сделать ... Я странный, потому что я могу cout, cin, итерации по циклу, но я просто не могу для жизни меня заставить его вернуть результат из продукта, хотя продукт делает все правильно, я напечатал результат до консоли до того, как он достиг утверждения return. Я просто не могу понять, почему он не возвращается ... – Ryncops

Смежные вопросы