При выполнении перегрузки операторов на классах bigint + и * я получаю ошибки, когда квалификаторы отбрасываются

myint.cpp: в функции MyInt operator+(const MyInt&, const MyInt&)':
myint.cpp:193: error: passing
const MyInt ‘as this' argument ofvoid MyInt :: Grow () ‘сбрасывает квалификаторы
myint.cpp: 194: ошибка: прохождение const MyInt' asэтот аргумент void MyInt::Grow()' discards qualifiers
myint.cpp:219: error:
массив ‘undeclared (сначала используйте эту функцию)
myint.cpp: 219: ошибка: (Каждый необъявленный идентификатор сообщается только один раз для каждой функции, в которой он появляется.)
myint.cpp: в функции MyInt operator*(const MyInt&, const MyInt&)':
myint.cpp:252: error: passing
const MyInt ‘as this' argument ofvoid MyInt :: Grow () ‘сбрасывает квалификаторы
myint.cpp: 262: ошибка: прохождение const MyInt' asэтот аргумент void MyInt::Grow()' discards qualifiers
myint.cpp:290: error: invalid conversion from
int * ‘to int'
myint.cpp:290: error: initializing argument 1 of
MyInt :: Минт (интермедиат)»

все мои ошибки на случай, если кто-нибудь может помочь.

и мой код здесь http://codepad.org/TlTFLjYd для файла cpp

0

Решение

Номера строк в кодовой панели не совпадают с ошибками, которые вы опубликовали.

myint.cpp: 193 (строка 171): In MyInt operator+ (const MyInt& x, const MyInt& y), ты звонишь x.Grow();, тем не мение x является постоянным Вы не можете изменить объект const. Найдите другой способ реализовать свой operator+ это не включает изменение x или же y, Например, начать с MyInt z = x; а затем работать над z,

myint.cpp: 219 (строка 197): вы пишете array.numArray, Тем не менее, вы никогда не заявляли array,
Ранее у вас есть код: (скобки добавлены мной для ясности):

if(x.maxSize > y.maxSize)
{
MyInt array[x.maxSize];
}
else
{
MyInt array[y.maxSize];
}

Эти массивы являются локальными для блока, в котором они объявлены, они больше не существуют после этого блока.

Также недопустимо иметь переменную в качестве размера массива. Ваш компилятор может реализовать его как нестандартное расширение.

Чтобы исправить все это, один из вариантов будет:

std::vector<MyInt> array ( std::max(x.maxSize, y.maxSize) );

myint.cpp: 290 (строка 216). Ваша функция возвращает MyIntОднако вы звоните return array;, который является массивом. Я не уверен, что вы хотели сделать здесь, поэтому я не могу порекомендовать исправление. Но я бы предположил, что раньше вы хотели массив int, а не массив MyInt, а затем вы хотите, чтобы этот новый массив был numArray из MyInt что ты вернешься.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector