Состав класса/ссылка разрушается с ошибкой ⇐ C++
-
Anonymous
Состав класса/ссылка разрушается с ошибкой
Я не уверен, что происходит, потому что единственное сообщение об ошибке, которое я получаю, — это ошибка времени выполнения Неизвестный сигнал, что не очень полезное сообщение (по крайней мере для меня), которое появляется на мой деструктор Image.
Однако, когда я удаляю/комментирую строку shared_ptr Adjust..., ошибка исчезает и программа работает. Есть ли другой способ создания ссылки на класс композиции?
image.h
#include "adjustments/adjust.h" внешний класс Настроить Настроить; внешний класс Изображение { публика: Shared_ptr корректировка = make_shared(shared_ptr(this)); виртуальный ~Image() = по умолчанию; // Ошибка в этой строке. } изображение; adjustments/adjust.h
#include "../image.h" использование пространства имен std; внешний класс Изображение изображения; внешний класс Adjust { частный: Shared_ptr изображение; публика: Настроить (shared_ptr изображение) { это-> изображение = изображение; } виртуальный ~Adjust() = по умолчанию; } регулировать; Класс изображения создается следующим образом (очень упрощенно):
с использованием пространства имен std; int main(int argc, char* argv[]) { // Загружаем jpeg с помощью libjpeg (это делается в классе Jpeg) и возвращаем в main. shared_ptr image = make_shared(); }
Я не уверен, что происходит, потому что единственное сообщение об ошибке, которое я получаю, — это ошибка времени выполнения Неизвестный сигнал, что не очень полезное сообщение (по крайней мере для меня), которое появляется на мой деструктор Image.
Однако, когда я удаляю/комментирую строку shared_ptr Adjust..., ошибка исчезает и программа работает. Есть ли другой способ создания ссылки на класс композиции?
image.h
#include "adjustments/adjust.h" внешний класс Настроить Настроить; внешний класс Изображение { публика: Shared_ptr корректировка = make_shared(shared_ptr(this)); виртуальный ~Image() = по умолчанию; // Ошибка в этой строке. } изображение; adjustments/adjust.h
#include "../image.h" использование пространства имен std; внешний класс Изображение изображения; внешний класс Adjust { частный: Shared_ptr изображение; публика: Настроить (shared_ptr изображение) { это-> изображение = изображение; } виртуальный ~Adjust() = по умолчанию; } регулировать; Класс изображения создается следующим образом (очень упрощенно):
с использованием пространства имен std; int main(int argc, char* argv[]) { // Загружаем jpeg с помощью libjpeg (это делается в классе Jpeg) и возвращаем в main. shared_ptr image = make_shared(); }
Мобильная версия