powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как правильно вызвать указатель на функцию с парам строкой?
25 сообщений из 90, страница 1 из 4
Как правильно вызвать указатель на функцию с парам строкой?
    #40013034
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что то не выходит, валится приложение.
И std::string пробовал и char, char *, char[])))))
...
Рейтинг: 0 / 0
Как правильно вызвать указатель на функцию с парам строкой?
    #40013035
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если ничего не помогает, вызывайте так, как описано в заголовке/документации.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как правильно вызвать указатель на функцию с парам строкой?
    #40013044
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Указатель как объявлен?

Если это экспортируемая из DLL функция, то как-то так
Код: plaintext
1.
2.
3.
4.
5.
6.
typedef int (WINAPI *DECODE) (const char*);
...

DECODE fn_decode = ...;
char* str = ...;
fn_decode(str);
...
Рейтинг: 0 / 0
Как правильно вызвать указатель на функцию с парам строкой?
    #40013050
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,
Спасибо.
Оказалось банальность в высшей степени.
Не успел присваивать в класс поле адрес функции.
В результате там null или мусор....
И главное отладчик пишет
SIGSEGV от операционки.
Ну я и не догадался что там пусто.
....
Работает простой std::string.
Везде его стараюсь.
...
Счас попробую на if nulll проверки добавить.
...
Рейтинг: 0 / 0
Как правильно вызвать указатель на функцию с парам строкой?
    #40013055
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно студия показывает более вменяемое сообщение на данный юзкейс чем Qt Creator.
Imho
...
Рейтинг: 0 / 0
Как правильно вызвать указатель на функцию с парам строкой?
    #40013064
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC SharpИ главное отладчик пишет
SIGSEGV от операционки.

Так собирать надо с отладочной информацией. Тогда он и место покажет, и call stack.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как правильно вызвать указатель на функцию с парам строкой?
    #40013072
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,
Думаю тут автоматом это режим. Как и в студии.
Кнопа - отладка.
Бряк на вызове функции возле main() из класс поставил.
При входе в метод падение.
Я заметил что в плюсах надо руками инициализировать поля указатели.
If (p) не работает из коробки.
...
Рейтинг: 0 / 0
Как правильно вызвать указатель на функцию с парам строкой?
    #40013076
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Адрес при ошибке (мусор) - 0х56
Адрес после
pointerMy = nullptr;
0x0
...
Рейтинг: 0 / 0
Как правильно вызвать указатель на функцию с парам строкой?
    #40013077
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Я заметил что в плюсах надо руками инициализировать поля указатели.
If (p) не работает из коробки.

Любые указатели надо инициализировать нулем или конкретным значением. Это не C# где автоматом нули по умолчанию.
В С/С++ просто выделяется память под хранение указателя, а значением становится тот мусор, который остался с прошлого использования этой памяти.
...
Рейтинг: 0 / 0
Как правильно вызвать указатель на функцию с парам строкой?
    #40013082
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TЛюбые указатели надо инициализировать нулем или конкретным значением.

Я даже больше скажу: переменные любого типа надо инициализировать. Причём компилятор имеет
привычку предупреждать об использовании неинициализированных переменных, но кто ж эти
"многа букафф" читает?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как правильно вызвать указатель на функцию с парам строкой?
    #40013083
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
PetroNotC Sharp
Я заметил что в плюсах надо руками инициализировать поля указатели.
If (p) не работает из коробки.

Любые указатели надо инициализировать нулем или конкретным значением. Это не C# где автоматом нули по умолчанию.
В С/С++ просто выделяется память под хранение указателя, а значением становится тот мусор, который остался с прошлого использования этой памяти.

Да.
Добавил
Код: plaintext
1.
2.
public:
   void (*p) (std::string) = nullptr;


А жаль.
Чем продиктовано что не как в шарпе?
...
Рейтинг: 0 / 0
Как правильно вызвать указатель на функцию с парам строкой?
    #40013084
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC SharpЧем продиктовано что не как в шарпе?

Шарп появился как "С++ для дебилов", а не наоборот.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как правильно вызвать указатель на функцию с парам строкой?
    #40013086
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
PetroNotC SharpЧем продиктовано что не как в шарпе?

Шарп появился как "С++ для дебилов", а не наоборот.))))))
...
Рейтинг: 0 / 0
Как правильно вызвать указатель на функцию с парам строкой?
    #40013087
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Чем продиктовано что не как в шарпе?

Производительностью. Запись нулей - не всегда нужная операция, но процессорное время на нее надо будет тратить всегда.
...
Рейтинг: 0 / 0
Как правильно вызвать указатель на функцию с парам строкой?
    #40013090
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,
Ну, время наверно сопоставимо с инициализацией всего класса?
Я чисто про класс говорю.
Тем кому время критично наверно без классов работают.
...
Рейтинг: 0 / 0
Как правильно вызвать указатель на функцию с парам строкой?
    #40013093
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC SharpНу, время наверно сопоставимо с инициализацией всего класса?

Ты не поверишь, но у классов тоже нет инициализации кроме явной в конструкторах.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как правильно вызвать указатель на функцию с парам строкой?
    #40013094
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Dima T,
Ну, время наверно сопоставимо с инициализацией всего класса?
Я чисто про класс говорю.
Тем кому время критично наверно без классов работают.

Инициализация объекта - это присвоение явно прописанных значений полям, запуск конструкторов полей и выполнение конструктора класса. Если ничего перечисленного нет, то на инициализацию класса не тратится ни одного процессорного такта.

Вобщем если что-то явно не прописали - С/С++ считает это лишним.
...
Рейтинг: 0 / 0
Как правильно вызвать указатель на функцию с парам строкой?
    #40013095
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
PetroNotC Sharp
Чем продиктовано что не как в шарпе?

Производительностью. Запись нулей - не всегда нужная операция, но процессорное время на нее надо будет тратить всегда.


строго говоря да, "производительностью".

Но у идеи такого поведения есть полезный побочный эффект,
который в "других местах" может проявляться ленивым выделением памяти, например.

смысл происходящего заключается в создании объекта в частично сформированном состоянии .
Там где заполняют нулями принудительно, считают, что нам таких объектов не нать.
Там, где не заполняют - считают, что это правомерное состояние, а полное состояние сформируется позднее.
В этом смысле, чтение до записи, в языках сорта C, является обыкновенной ошибкой програмиста.
...
Рейтинг: 0 / 0
Как правильно вызвать указатель на функцию с парам строкой?
    #40013109
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby,
Вы намекаете на анализ сего факта что если там мусор значит объект еще не родиля и на 6м месяце?
А как вы проверите что там мусор и объект не полностью готов?
...
Рейтинг: 0 / 0
Как правильно вызвать указатель на функцию с парам строкой?
    #40013119
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
booby,
Вы намекаете на анализ сего факта что если там мусор значит объект еще не родиля и на 6м месяце?
А как вы проверите что там мусор и объект не полностью готов?

хоть на 36-м.

Зачем нужен объект, и когда должен оказаться полностью сформированным - дело его создателя .

Проверять ничего не надо .

За готовность объекта к использованию на момент его фактического использования,
когда состояние должно оказаться полностью сформированным, никто, кроме создателя, ответственности не несет.
Это просто - хочешь "значения по умолчанию" - просто присвой его, имени себя, как создателя, конкретное умолчание,
путем совмещенния объявления подходящей по типу переменной с конструированием любимого, или потребного в конкретном месте, "умолчания".

у тебя эта парадигма, в этом языке от зубов на кончиках пальцев, без включения мозга, на полном автомате должна работать.

Как правильные движения лыжного гонщика, велосипедиста или пловца.
Однажды усвоенные движения невозможно вытеснить.
При наступлении усталости новый навык "устаёт", и просыпается первоначальный.
Если ты на шарпах первый навык получал, и "немного устал сегодня", то пальцы твои автоматически начнут рассчитывать на дефолтные привоения.

Просто надо отдохнуть.
...
Рейтинг: 0 / 0
Как правильно вызвать указатель на функцию с парам строкой?
    #40013123
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby,
А я думал что за полезный побочный эффект)))))
Короче, не расслабляйся)
...
Рейтинг: 0 / 0
Как правильно вызвать указатель на функцию с парам строкой?
    #40013124
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,

а что думаешь, легко было осваивать коньковый ход в лыжах тем, кто всю жизнь бегал классикой...
...
Рейтинг: 0 / 0
Как правильно вызвать указатель на функцию с парам строкой?
    #40013132
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby,
Ну, инициализацию фигурными скобками же добавили)
...
Рейтинг: 0 / 0
Как правильно вызвать указатель на функцию с парам строкой?
    #40013144
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
booby,
Ну, инициализацию фигурными скобками же добавили)


это же ничего не меняет по смыслу.
ты как был бог, так им и остаёшься.
Что напишешь в эти скобки, так мир и окажется устроен.

В своих структурах/классах ты можешь рулить конструкторами по умолчанию, представляя себе разумное поведение,
формируя его полностью, или сознательно оставляя часть структуры, а значит - сам объект, в неполностью сформированном состоянии.
В последнем случае - ты либо кодом для "как проверять" это дело снабжаешь, или/и конструкторами,
позволяющими получить полностью сформированный объект.
...
Рейтинг: 0 / 0
Как правильно вызвать указатель на функцию с парам строкой?
    #40013149
Dimitry Sibiryakov
Я даже больше скажу: переменные любого типа надо инициализировать. Причём компилятор имеет привычку предупреждать об использовании неинициализированных переменных, но кто ж эти "многа букафф" читает?..

в C++ же конструкторы этим занимаются, которых не было в C.
И они же гарантируют, что не будет мусора.
Классы в C++ сделаны для увеличения автоматизма и уменьшения ошибок.
А вот так зачем в C++ писать непонятно:
PetroNotC Sharp
Код: plaintext
1.
2.
public:
   void (*p) (std::string) = nullptr;


это же "naked pointer", который "НЕЛЬЗЯ"
...
Рейтинг: 0 / 0
25 сообщений из 90, страница 1 из 4
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как правильно вызвать указатель на функцию с парам строкой?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]