Рассмотрим следующий код:вина Сегментация и перегрузка операторов
bool Queue::operator+=(int value) {
std::cout << "Appending the value " << value;
std::cout << " by using operator overloading." << std::endl;
// in the actual code: q->append(value);
return false;
}
int main() {
Queue *q = new Queue();
for (unsigned i = 0; i < 1000; i++) {
q+=6;
}
q->append(6);
delete q;
return EXIT_SUCCESS;
}
У меня есть намного больше кода в фактической реализации, но здесь главная проблема:
Я пытаюсь использовать оператор перегружать как Append которая добавляет элемент к объекту Queue
. Основная функциональность работает с функцией Queue::append
. В любом случае, я скомпилировал этот код, и операционная перегрузка оператора +=
компилируется без ошибок. Но программа все равно сработает.
При отладке, кажется, что всякий раз, когда я использую Queue
объект q
(например только деструктор или другую функцию, как Queue::append
) после используя перегрузку, я получаю ошибку в сегментации.
Я не могу понять, что я делаю неправильно.
Очевидно, что в этом примере перегрузка состоит из выхода и возврата bool
.
Я думаю, что вы имели в виду '(* q) + = 6;' –
Спасибо большое! Такая глупая ошибка ... Я как бы новичок в C++ и полностью проигнорировал это ... – Acctubi