|
Как правильно вызвать указатель на функцию с парам строкой?
|
|||
---|---|---|---|
#18+
Вот хорошее дефолтное поведение для компиллятора. Код: plaintext 1.
Для всех диких переменных сделали бы так. Убудет штоли? Или лишние такты процессора жалко? Что там этот лысый дядечка? Держится за старое? Компатибилити? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2020, 01:10 |
|
Как правильно вызвать указатель на функцию с парам строкой?
|
|||
---|---|---|---|
#18+
mayton, а почему тебя ломает написать это своими ручками? Без этого слово "вечность" не соберется, так и поедешь к Герде цветы поливать. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2020, 01:20 |
|
Как правильно вызвать указатель на функцию с парам строкой?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Алексей Роза 2020, А если у меня указатель просто переход на функцию глобальную в модуле main? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
Никакие addref, release делать не нужно. Хм, а чё это у вас ф-я в глобале, а не в наследуемом классе, м? Тогда бы и указатель не нужен был. Надо просто за правило взять, что указатели в C++ - это плохо. вот, тоже правильно пишет: Dima T Скажем так: не рекомендуется использовать. Можно потому что указатель под капотом тех же умных указателей и прочих классов STL. Указатели даже для С++ это рудимент унаследованный из С, в С++ изначально ввели ссылки чтобы хоть как-то проблемы с указателями сгладить, но указатели оставили. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2020, 01:38 |
|
Как правильно вызвать указатель на функцию с парам строкой?
|
|||
---|---|---|---|
#18+
Я не про это. Я говорю что делать с наследием? С тысячами исходников которые уже написаны так Код: plaintext 1.
и наследуют поведение кота Шрёдингера. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2020, 01:38 |
|
Как правильно вызвать указатель на функцию с парам строкой?
|
|||
---|---|---|---|
#18+
mayton, если без смеха, то моему глазу милее инициализация с круглыми скобками - int i3(42); просто потому, что по смыслу письма, эта форма означает вызов параметризованного конструктора. Что в меня гораздо проще въезжает. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2020, 01:39 |
|
Как правильно вызвать указатель на функцию с парам строкой?
|
|||
---|---|---|---|
#18+
mayton Я не про это. Я говорю что делать с наследием? С тысячами исходников которые уже написаны так Код: plaintext 1.
и наследуют поведение кота Шрёдингера. Для богов это не имеет значения. Кот Шредингера, как и Чеширский - часть мира. Отражающая факт присутствия в мире неопределенного поведения по вине богов ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2020, 01:42 |
|
Как правильно вызвать указатель на функцию с парам строкой?
|
|||
---|---|---|---|
#18+
Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2020, 01:42 |
|
Как правильно вызвать указатель на функцию с парам строкой?
|
|||
---|---|---|---|
#18+
Алексей Роза 2020 Код: plaintext 1.
Это правда, хороший вопрос. По сути вопрос о том, как правильно писать свой operator= И как он связан с copy-constructor, move и swap. Конечно, хорошо было бы, чтобы в этом месте о вкусе устриц высказались те, кто их ел. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2020, 02:58 |
|
Как правильно вызвать указатель на функцию с парам строкой?
|
|||
---|---|---|---|
#18+
Алексей Роза 2020, Сам не хотел такую архитектуру, да либа заставила. Если ее первой не воткнуть до всего всего кода то не компилируется. Я так понял, что конфликты с заголовками Qt. Чей вперед заголовок тот и побеждает. Не знаю как решить, а так работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2020, 07:40 |
|
Как правильно вызвать указатель на функцию с парам строкой?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Алексей Роза 2020, Сам не хотел такую архитектуру, да либа заставила. Если ее первой не воткнуть до всего всего кода то не компилируется. Я так понял, что конфликты с заголовками Qt. Чей вперед заголовок тот и побеждает. Не знаю как решить, а так работает. Вот похожая проблема с другой либой авторЯ обнаружил, что с OpenCV 3 замена порядка заголовков включает так, чтобы opencv2 / opencv.hpp был включен до того, как какие-либо заголовки Какао также позволяют избежать ошибки компилятора. - MoDJ 31 дек. Была такая же проблема с разными комбинациями заголовков. - JE42 06 июля '16 в 13:45 Использование #undef checkперед включением opencv.hppможет устранить ошибку. Это полезно в смешанной среде Swift / obj-C, где вы не всегда можете перетасовать порядок включения. - acj 24 августа '16 в 14:07 https://stackoverflow.com/questions/31665095/xcode-error-compiling-c-expected-member-name-or-after-declaration-specifie ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2020, 07:57 |
|
Как правильно вызвать указатель на функцию с парам строкой?
|
|||
---|---|---|---|
#18+
booby Dima T Мы тут долго обсуждаем почему не ноли, а можно что-то добавить чтобы в своем проекте сделать инициализацию нолями? Просто сделать для себя как хочется, а не как принято. как-то странно сам вопрос выглядит (вроде фигурные скобки уже были в топике). Про скобки и прочие способы явной инициализации понятно. Стек пока тоже оставим в стороне. Зачем? Чтобы меньше косячить тем кто не привык писать на С++, например ТСу, привыкшему в C# что по-умолчанию ноль. Допустим производительность некритична, и просто хочется перегрузить оператор new так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
Также прочие виды new по аналогии. Но поможет ли это ему если он использует Qt ? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2020, 08:15 |
|
Как правильно вызвать указатель на функцию с парам строкой?
|
|||
---|---|---|---|
#18+
Dima T, А что? Это инициализирует все все поля в классе? И дату и строку и числа и.... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2020, 08:36 |
|
Как правильно вызвать указатель на функцию с парам строкой?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Dima T, А что? Это инициализирует все все поля в классе? И дату и строку и числа и.... Да. Это выделение памяти под объект, т.е. под все его поля. http://www.amse.ru/courses/cpp2/2011_03_21.html Штатно malloc() дает кусок памяти с мусором, замена на calloc() приведет к тому что мусор заменится на нули. Далее там где явно инициализация прописана - проинициализируется согласно прописанному, что не прописано - останется с нулями. Вот только я не уверен что Qt будет вызывать этот перегруженный new. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2020, 08:45 |
|
Как правильно вызвать указатель на функцию с парам строкой?
|
|||
---|---|---|---|
#18+
Тут еще такой момент: если Qt использует свой перегруженный new, то если мы его подменим - он не будет вызываться. Вот еще статья про перегрузку https://habr.com/ru/post/490640/ PS Я перегрузкой не пользуюсь, поэтому только в теории про нее знаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2020, 08:57 |
|
Как правильно вызвать указатель на функцию с парам строкой?
|
|||
---|---|---|---|
#18+
Dima T, Имхо для Qt оверхед ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2020, 09:28 |
|
Как правильно вызвать указатель на функцию с парам строкой?
|
|||
---|---|---|---|
#18+
Del ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2020, 09:28 |
|
Как правильно вызвать указатель на функцию с парам строкой?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Имхо для Qt оверхед ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2020, 10:50 |
|
Как правильно вызвать указатель на функцию с парам строкой?
|
|||
---|---|---|---|
#18+
Basil A. Sidorov PetroNotC Sharp Имхо для Qt оверхед Я давно определился. Оверхед обозначает "компромисс МЕЖДУ правильностью и затратами на это". Так как инициализация без new, то определитесь что вы лично предлагаете. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2020, 11:29 |
|
Как правильно вызвать указатель на функцию с парам строкой?
|
|||
---|---|---|---|
#18+
Алексей Роза 2020 ... Хм, а чё это у вас ф-я в глобале, а не в наследуемом классе, м? ... Рискну переформулировать эту идею и изложить её в императивной форме: Нигде не используй классы QT в своем коде напрямую. Создай свои классы-прослойки, со своими, тебе конкретно полезными конструкторами, и в своем коде используй только эти интерфейсы-оболочки, лежащие в собственных файлах. Изолируй зависимости в первую очередь. А уж там наследование окажется или агрегация внутри - дело вторичное по отношению с сплошному растягиванию по коду зависимостей от QT, непрерывных проблем инициализации и порождению проклятия перехода на "новую версию чужой библиотеки". это же очевидное дело - взялся взаимодействовать с чужой библиотекой - сначала отгородись от неё забором. Взаимодействуй с чужой библиотекой только через управляемые тобой окошки и дверки. Тогда то, что происходит позадь забора, не будет тревожить твой собственный огород, кроме, может быть, вопроса о выборе цвета краски для любимого забора. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2020, 12:04 |
|
Как правильно вызвать указатель на функцию с парам строкой?
|
|||
---|---|---|---|
#18+
booby mayton, если без смеха, то моему глазу милее инициализация с круглыми скобками - int i3(42); просто потому, что по смыслу письма, эта форма означает вызов параметризованного конструктора. Что в меня гораздо проще въезжает. Вы согласны писать на 1 символ больше? Всегда? И просто из чувства прекрасного? Из осознания того что работает конструктор? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2020, 12:06 |
|
Как правильно вызвать указатель на функцию с парам строкой?
|
|||
---|---|---|---|
#18+
mayton, :)) обычно я согласен писать то, что сам способен прочитать без затруднений. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2020, 12:10 |
|
Как правильно вызвать указатель на функцию с парам строкой?
|
|||
---|---|---|---|
#18+
booby, -1 Qt это не просто либа. Это фреймворк-платформа. Она диктует архитектуру. Как хибер в java или спринг. То есть наоборот. Везде используй QtObject QString а не std::string и т.д. Если буст, то там свои законы. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2020, 12:10 |
|
Как правильно вызвать указатель на функцию с парам строкой?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Basil A. Sidorov пропущено... Вы уже определитесь - или вам инициализированные объекты или "оверхед". Я давно определился. Оверхед обозначает "компромисс МЕЖДУ правильностью и затратами на это". Так как инициализация без new, то определитесь что вы лично предлагаете. Походу ты не понял, new происходит в любом случае, я же 22223355 скопипастил код классического new и показал какую строчку надо заменить чтобы нули появились. Я ссылки давал, мог бы почитать http://www.amse.ru/courses/cpp2/2011_03_21.html Переменная объектного типа в динамической памяти создаётся в два этапа: 1. Выделяется память с помощью оператора new. 2. Вызывается конструктор класса. Без п.1 просто негде будет объект создавать, п.2 по мере необходимости, т.е. только то что явно в коде задано. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2020, 12:12 |
|
Как правильно вызвать указатель на функцию с парам строкой?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, как скажешь... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2020, 12:16 |
|
|
start [/forum/topic.php?fid=57&msg=40013402&tid=2017312]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 143ms |
0 / 0 |