Как типизировать указатель константного класса на int *, используя типотипирование С ++ - PullRequest
0 голосов
/ 08 июня 2019

Как привести указатель класса const к int * в стиле c ++?

Используя только 4 C ++ static_cast, dynamic_cast, reinterpret_cast или const_cast

Рассмотрим следующий класс:

class A
{
public:
    virtual void foo(A& a) { std::cout << "A::foo" << std::endl; }
};

void logPtr(int* c) { std::cout << std::hex << c << std::endl; }

const A* pa = new A();

logPtr((int*)pa);

Каким образом приведение типов в стиле c ++ должно отображаться в этом коде?

Я ожидаю вывод шестнадцатеричного числа в приведении типов C, а также приведение типов в стиле C ++.

1 Ответ

0 голосов
/ 08 июня 2019

Вам нужно будет использовать reinterpret_cast, но позвольте мне бросить вызов : Во-первых, не используйте int*. void* лучший выбор. Любой тип указателя может быть преобразован в void* без приведения.

void logPtr(const void* p) { std::cout << std::hex << p << std::endl; }

const A* pa = new A();
logPtr(pa);

Не принуждайте типы, когда вам не нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...