Каков синтаксис для доступа к адресу этого указателя в C ++?

0

Я пытаюсь узнать адрес этого указателя. пробовал следующим образом. может ли кто-нибудь предложить мне правильный метод? Я пытаюсь распечатать cout<<&this<<endl; в функции члена класса. но компилятор генерирует ошибку C2102: '&' требует l-value.

  • 2
    stackoverflow.com/questions/6067244/type-of-this-pointer и stackoverflow.com/questions/7370109/… . Вы не можете получить адрес этого. это не тип l-значения.
  • 0
    Вы бы даже не захотели. this скрытый параметр для каждого вызова функции. В конце области действия функции &this не будет действительным в любом случае. Что бы вы сделали с ним (в программе с хорошим поведением)?
Показать ещё 1 комментарий
Теги:

3 ответа

1

Если я не ошибаюсь, std::cout << this должно быть достаточно.

class Foo
{
public:
    void foo()
    {
        std::cout << this << std::endl;
    }
};

int main()
{
    Foo foo{};
    foo.foo();
}
0

Указатель C++ - это адрес. Это просто разные термины, означающие одно и то же. Поэтому вам не нужно получать адрес "этого" указателя (который в основном означает "указатель на указатель" или "адрес адреса")

std :: cout << this;

0

Если вы хотите напечатать адрес указателя, наведите его на длинный. Обычно вы захотите напечатать его в шестнадцатеричном формате, а не decimal-, который легче читать. Вероятно, вы не хотите печатать & this-, который был бы адресом, где хранится указатель на класс, полагаю, вы хотите напечатать, где находится класс. Это будет просто cout << (long);

  • 0
    Что не так с печатью самого указателя?
  • 0
    Это может быть перегружено. Принятие этого как долго гарантирует, что это будет рассматриваться как число. Вероятно, сработает только указатель на указатель, но он заставил меня укусить себя за задницу при выполнении работ по техническому обслуживанию. (что является одной из многих причин, по которым я предпочитаю printf, но отдельный аргумент).
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню