
ProIt
01.05.2018
23:19:31
я не понимаю может это из-за QList контейнера но таким макаром не работает
вообщем без скриншетов, смыссл в том, что в массиве структура хранится в ней есть строка с датой, вот по этой строке бывает очень хорошо находить нужный элемент
раньше вернее было удобно

Andrey
01.05.2018
23:24:16
вообще какой-то странный способ отладки вы придумали. глазами пробегать по всему списку в поисках чего-то нужного - та еще радость.

Google

Andrey
01.05.2018
23:25:11
но можно же просто попросить отладчик показать нужную область памяти и скастовать ее к вашей структуре.

ProIt
01.05.2018
23:26:54
не это вы очень сложно выражаетесь, я ж деревня не алё, легче дату нужную найти чем каждый раз указывать что мне на данный момент нужно )))
вы имеете ввиду "добавить вычисляемое выражение" ?

Andrey
01.05.2018
23:31:38
есть некий массив Array array[size];
командой p array вы смотрите этот массив с нулевого элемента. отладчик показвыает вам первые N элементов.
попросите отладчик показать этот же массив, но не с нулевого, а N-ного элемента.

ProIt
01.05.2018
23:34:37
интересно, я подумал так можно сделать в самом креаторе, попробовал но походу нельзя
если это делать через консоль то это вообще не дело

Andrey
02.05.2018
00:10:51
я qtcreator видел только на картинках, да и то издалека. но, подозреваю, что и в нем такое сделать возможно.

Anton
02.05.2018
00:23:50

Andrey
02.05.2018
00:25:41

ProIt
02.05.2018
00:51:22
уже утро а я всё ищу как облегчить страдания, для статик сайз мне не подходит, а в креаторе не нашёл как можно задать просмотр значений массива с середины
пожалуй надо будет на qt задать вопрос )
вот на винде я не знал что с этим могут быть проблемы

Сергей
02.05.2018
02:18:22
Привет всем!

Google

Ilia
02.05.2018
04:51:18


Евгений
02.05.2018
08:02:10
Я тут старую либу с си на плюсы переписываю, вот это как понимать?
static void
allocate_enough_to_reach(matches_and_old_values_array *array,
void *last_byte_to_reach_plus_one,
size_t bytes_needed = last_byte_to_reach_plus_one - (void *) array;
...
}
Ошибка компиляции:
error: invalid use of ‘void’
size_t bytes_needed = last_byte_to_reach_plus_one - (void *) >>array<<;

Александр
02.05.2018
08:03:01
void* не поддерживает адресную арифметику по стандарту
Кастуй к char*

Dmitrii
02.05.2018
09:07:33
Ребят кто с antlr работал в С++? Есть задача преобразовать один код в другой с учётом грамматики, лексики и синтаксиса. Может есть у кого доки для быстрого старта?

Alexander
02.05.2018
09:13:57
А почему antlr? Это разве не жабье поделие?
Мб стоит попробовать что-то на базе llvm

Dmitrii
02.05.2018
09:16:02

ProIt
02.05.2018
09:16:05

Ilia
02.05.2018
10:32:12

Andrey
02.05.2018
11:05:24
Коллеги возник вопрос. есть ли преимущества у shared_ptr над статическим объектом. Время жизни одинаковое (плюс минус). Ну то есть у меня грубо говоря в мэин лупе процесса создаётся два потока, каждому нужно передать некий объект (один и тот же для обоих). Текущее решение использует создание shared_ptr но я не вижу смысла особо, если можно создать статически и передавать по ссылке.

Александр
02.05.2018
11:06:35
в поинтере потокобезопасность продумана

Friedrich
02.05.2018
11:07:01

Andrey
02.05.2018
11:07:39

Friedrich
02.05.2018
11:07:44
Ну мало ли, окажется, что всё-таки в каждый поток надо передавать свой объект или адаптер. Или кому-то понадобится завести два экземпляра твоего сервиса в одном адресном пространстве.

Andrey
02.05.2018
11:09:28

/dev
02.05.2018
11:10:18

Andrey
02.05.2018
11:10:41

Google

Friedrich
02.05.2018
11:10:43

/dev
02.05.2018
11:11:05

Александр
02.05.2018
11:11:23
лол

Friedrich
02.05.2018
11:11:31

Matwey
02.05.2018
11:11:40
А потом попользовался и удалил shared_ptr

Andrey
02.05.2018
11:11:56

Friedrich
02.05.2018
11:12:10

Matwey
02.05.2018
11:12:33

Friedrich
02.05.2018
11:12:44

/dev
02.05.2018
11:12:50

Andrey
02.05.2018
11:13:03

Matwey
02.05.2018
11:13:20
Но ты об этом не знаешь
Ну типа, есть объект, внутри объект
Оъект лежит в shared_ptr, нужно отдавать shared_ptr на член объекта
Вот это всё
А рефкаунтер у них будет общий

Andrey
02.05.2018
11:14:18
Вот кстати на собеседовании сюда обсуждал этот вопрос
;) про aligned shared_ptr

Google

Andrey
02.05.2018
11:15:17
я тут не хотел вдваться в детали но это ещё и не std::shared_ptr а наш собственный (но очень близкий к стандартному)
Короче вопрос изначальный как бы shared_ptr vs static - подводные камни, отговорите

Assasin
02.05.2018
11:16:03

/dev
02.05.2018
11:17:01

Admin
ERROR: S client not available

Max
02.05.2018
11:19:07

/dev
02.05.2018
11:19:45
Почему?
У тебя уже аватарка без ручек
Почему?
Потому что это идёт в разрез с семантикой.

Max
02.05.2018
11:21:04

Andrey
02.05.2018
11:21:17
Короче если тебе нужно из объекта под shared_ptr отдать значение поля тоже shared_ptr ом ты можешь создать его таким образом чтобы увязать управляющую структуру. То есть shared_ptr будет иметь тип поля, но пока он жив, то материнский объект тоже будет существовать.
reference counter у них будет один на двоих

Assasin
02.05.2018
11:24:15
хм, это в таких случаях как раз нужен shared_from_this?

Matwey
02.05.2018
11:25:18
shared_from_this это перпендикулярная фича

Max
02.05.2018
11:26:34

Matwey
02.05.2018
11:26:39
Тут просто игра идет на том, что shared_ptr состоит из двух указателей. Указатель на контрольный блок, где расположены счетчики использования и указатель на объект. Указатель на объект у каждого shared_ptr может указывать в разные места
А контрольный блок у них может быть общий

Assasin
02.05.2018
11:27:21
понял, спасибо

Matwey
02.05.2018
11:27:28
shared_from_this работает по другому

Google

Matwey
02.05.2018
11:27:37
Нужно отнаследоваться от класса enable_shared_from_this
он добавит в твой объект еще один член weak_ptr
Т.е. указатель на контрольный блок
Когда ты будешь класть свой объект в shared_ptr, то shared_ptr поймет, что твой тип - наследний enable_shared_from_this и внутри запишет в этот член валидный указатель на контрольный блок
На тот же самый, который ты только что создал
Поэтому объект внутри сможет воссоздать новые shared_ptr используя свой контрольный блок, куда у него есть доступ
Но к сожалению пользоваться этим до C++17 небезопасно

Assasin
02.05.2018
11:29:42
ааа, вот что за магия там происходит, блин, все предусмотрели и оптимально сделали)

Matwey
02.05.2018
11:30:04
Потому-что shared_from_this() приводит к UB, если контрольный блок не записан, т.е. объект не лежит в shared_ptr

Oleg
02.05.2018
11:30:12

Matwey
02.05.2018
11:30:19
И проверить лежит ли объект в shared_ptr перед вызовом shared_from_this() невозможно

Assasin
02.05.2018
11:30:40
а после C++17 что поменялось? проверок в контрольный блок добавили?

Oleg
02.05.2018
11:30:51
У тебя не скомпилится код, если объект, который делает sahred_fron_this сам не лежит в shared_ptr

Max
02.05.2018
11:31:03

Matwey
02.05.2018
11:31:07
скомпилится еще как