Size: a a a

2020 October 31

P

Pavel in Alprog I/O
Ksanf Fillum
ну тогда бы myTrivialFunction тоже падала
Не обязательно, там УБ и обычно невиртуальные функции могут отработать пока не обращаются к полям класса
источник

P

Pavel in Alprog I/O
Если адрес норм, то я бы подумал на порчу памяти
источник

P

Pavel in Alprog I/O
Ещё вариант, что кто-то попытался объект занулить будто он POD (или как там их модно сейчас называть?)
источник

P

Pavel in Alprog I/O
Это уже смотреть надо
источник

KF

Ksanf Fillum in Alprog I/O
адрес норм
сейчас для теста сделал:
в базовом классе
int getMyField() { return myField; }
virtual int getMyFieldVirtual() { return myField; }
int myField = 10;
вызываю из того кода
auto t1 = it.getMyField();
auto t2 = it.getMyFieldVirtual();
t1 = 10
t2 - падает
источник

KF

Ksanf Fillum in Alprog I/O
а может мув-семантика так портить дату, если она не определена явно?
источник

P

Pavel in Alprog I/O
Ksanf Fillum
адрес норм
сейчас для теста сделал:
в базовом классе
int getMyField() { return myField; }
virtual int getMyFieldVirtual() { return myField; }
int myField = 10;
вызываю из того кода
auto t1 = it.getMyField();
auto t2 = it.getMyFieldVirtual();
t1 = 10
t2 - падает
А как объект конструируется?
источник

P

Pavel in Alprog I/O
Ksanf Fillum
а может мув-семантика так портить дату, если она не определена явно?
Смотря что написано в мув конструкторе/операторе
источник

P

Pavel in Alprog I/O
Если там мемсет какой-нибудь, то может
источник

KF

Ksanf Fillum in Alprog I/O
ну они дефолтные
типа
BaseClass() = default;

для всех пяти операций (три конструктора, две операции присваивания)
источник

P

Pavel in Alprog I/O
Ksanf Fillum
ну они дефолтные
типа
BaseClass() = default;

для всех пяти операций (три конструктора, две операции присваивания)
А, если НЕ определена, то не должно быть ничего
источник

P

Pavel in Alprog I/O
Не прочитал "не"
источник

P

Pavel in Alprog I/O
Так а как вы объект создаёте в components?
источник

KF

Ksanf Fillum in Alprog I/O
есть мапа
я получаю (внутри темплейта)
auto& comp = map[index];
comp = TComponent();
источник

KF

Ksanf Fillum in Alprog I/O
мапа из TComponent-ов
источник

SS

Stanislav Sorochich in Alprog I/O
А если отказаться от использования auto?
источник

KF

Ksanf Fillum in Alprog I/O
не, выводит то он правильно, я проверил.
могу ради теста попробовать
источник

KF

Ksanf Fillum in Alprog I/O
не, не помогло
источник

P

Pavel in Alprog I/O
Ksanf Fillum
есть мапа
я получаю (внутри темплейта)
auto& comp = map[index];
comp = TComponent();
Это а зачем присваивание нужно?
У вас какая-то не стандартная мапа которая сама не вызывает конструктор по умолчанию?
источник

KF

Ksanf Fillum in Alprog I/O
да, там open-index hashmap
источник