2015-11-01 7 views
0

Как получилось, что fractionAry[i] = new Fraction(num1, denom1) работает и сохраняет созданную дробь в индекс i.Ошибка: нет оператора = соответствует этим операндам

Но когда я делаю fractionAry[i][j] = new Fraction(num1, denom1), компилятор дает мне ошибку, говоря, что оператор не соответствует этим операндам?

Если я хотел бы сохранить дробь в j, как бы я это сделал? Я не совсем уверен, как хранить фракцию в массиве массивов фракций ...

Вот мой код, спасибо за помощь заблаговременно.

void createArray() { 
    Fraction** fractionAry; 
    int aryCount; 
    int arySize; 
    int i, j; 
    int num1, denom1; 

    cout << "\nHow many arrays of fractions (treating these as array of arrays of fractions? "; 
    cin >> aryCount; 

    if (aryCount > 0) { 
     fractionAry = new Fraction*[aryCount]; 
     for (i = 0; i < aryCount; i++) { 
      cout << "\nCreating array index # " << i 
       << "\n How many fractions(s)? "; 
      cin >> arySize; 

      if (arySize > 0) { 
       fractionAry[i] = new Fraction[arySize + 1]; 
       fractionAry[i][0] = arySize; 

       for (j = 1; j < arySize + 1; j++) { 
        cout << "\n Enter the numerator: "; 
        cin >> num1; 
        cout << " Enter the denominator: "; 
        cin >> denom1; 
        while (denom1 == 0) { 
         cout << "\nCan't set to 0! Enter a new denominator: "; 
         cin >> denom1; 
        } 
        fractionAry[i] = new Fraction(num1, denom1); 

        // fractionAry[i][j] = new Fraction(num1, denom1); I would like to do this instead 
       } 

       cout << "\nFor array index #" << i << endl; 
       for (j = 0; j < arySize + 1; j++) { 
        cout << " Element index #" << j << " : " << *(*(fractionAry + i) + j) << endl; 
       } 
      } 
     } 
    } 
} 

ответ

0

Вместо того, чтобы дробный [I] [J] = новая фракция (...) использование дробной [I] [J] = доля (...). Тип в fractionAry [i] [j] - это фракция, а не фракция *, что и возвращает новый оператор.

void createArray() { 
    Fraction** fractionAry; 
    int aryCount; 
    int arySize; 
    int i, j; 
    int num1, denom1; 

    cout << "\nHow many arrays of fractions (treating these as array of arrays of fractions? "; 
    cin >> aryCount; 
    if (aryCount < 1) 
    { 
     //print error message or exit function 
    } 
    fractionAry = new Fraction*[aryCount]; 
    for (i = 0; i < aryCount; i++) 
    { 
     cout << "\nCreating array index # " << i 
      << "\n How many fractions(s)? "; 
     cin >> arySize; 
     if (arySize < 1) 
     { 
      //Print error message decrement i and continue or exit function 
     } 
     fractionAry[i] = new Fraction[arySize + 1]; 
     //I don't understand the purpose of assigning the below value or making the array one size bigger 
     fractionAry[i][0] = arySize; 
     /// 
     for (j = 1; j < arySize + 1; j++) 
     { 
      cout << "\n Enter the numerator: "; 
      cin >> num1; 
      cout << " Enter the denominator: "; 
      cin >> denom1; 
      while (denom1 == 0) 
      { 
       cout << "\nCan't set to 0! Enter a new denominator: "; 
       cin >> denom1; 
      } 
      fractionAry[i][j] = Fraction(num1, denom1); 
     } 
     cout << "\nFor array index #" << i << endl; 
     for (j = 0; j < arySize + 1; j++) 
     { 
      cout << " Element index #" << j << " : " << fractionAry[i][j] << endl; 
     } 

    } 
}