Конструктор назначения копирования работает неправильноC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Конструктор назначения копирования работает неправильно

Сообщение Anonymous »

Мне казалось, что я правильно позаботился о различных конструкторах для класса, который в основном содержит следующее:

Код: Выделить всё

   struct Interaction {
Interaction() = default;
~Interaction() = default;
//        Interaction(Interaction const& other) = default;
//        auto operator=(Interaction const& other) -> Interaction& = default;
//        Interaction(Interaction&& other) noexcept = default;
//        auto operator=(Interaction&& other) noexcept -> Interaction& = default;

Interaction(Interaction&& other) noexcept
: coefficients_(std::move(other.coefficients_))
, functions_(std::move(other.functions_))
, terms_(std::move(other.terms_))
, hash_value_(other.hash_value_) {};

auto operator=(Interaction&& other) noexcept -> Interaction& {
if (this != &other) {
std::swap(coefficients_, other.coefficients_);
std::swap(functions_, other.functions_);
std::swap(terms_, other.terms_);
std::swap(hash_value_, other.hash_value_);
}
return *this;
}
...
При попытке выполнить следующее:

Код: Выделить всё

item[i].interaction = creator(...);
где создатель в конечном итоге просто возвращает правильно построенное Взаимодействие,
Я получаю ошибка сегментации в деструкторе ~Interaction() = default;, что, как я подозреваю, связано с term_, но я не уверен, как решить эту проблему.

Подробнее здесь: https://stackoverflow.com/questions/792 ... -correctly
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»