Добрый день. Объясните пожалуйста, почему когда я пытаюсь вывести адрес метода класса с помощью функции printf(), он выводится в консоль в обычном 16-ном виде, но когда использую для этой цели cout, выводится 1. Почему так происходит? В интернете ничего не нашел, возможно плохо искал. Что значит 1? Заранее спасибо за помощь.
PhoneBook book("Rafalsky", "Andrey", "Anatoliyovich", 13, 2, 1999, "+380999999999", "Uk", "Polt");
printf("Person::Show -- %p\n", &Person::Show);
cout << &Person::Show << endl;
Функция printf
с параметром p
не может вывести значение указателя на метод класса, так как указатель на метод класса не может быть приведен к void *
. cout
же приводит указатель на метод класса к bool
. Никаких встроенных методов для печати значений указателей на методы класса нет. Можно попробовать выводить значение указателя побайтово:
auto p_method{&Person::Show};
auto p_byte{reinterpret_cast<::std::uint8_t const *>(::std::addressof(p_method))};
::std::size_t byte_index{};
do
{
::std::cout << ::std::hex << ::std::setw(2) << ::std::setfill('0') <<
static_cast<::std::uint32_t>(p_byte[byte_index]);
++byte_index;
}
while(sizeof(p_method) != byte_index);
online compiler
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Нужно получить базовый адрес процесса, нашёл пример кода но он и подобные ему выдают вот такую ошибку в чём может быть дело? Скрин ошибки https://imgurcom/P0lTSp4
Как в С++ получить базовый адрес процесса? Не могу найти примеров как получить такой адрес
Не совсем корректно работает программа для поиска индекса элемента по ключу
Задание: сделать массив из структур(содержание структуры это информация про ваших друзей, имя фамилия и тд