Я пытаюсь узнать адрес этого указателя. пробовал следующим образом. может ли кто-нибудь предложить мне правильный метод? Я пытаюсь распечатать cout<<&this<<endl;
в функции члена класса. но компилятор генерирует ошибку C2102: '&' требует l-value.
Если я не ошибаюсь, std::cout << this
должно быть достаточно.
class Foo
{
public:
void foo()
{
std::cout << this << std::endl;
}
};
int main()
{
Foo foo{};
foo.foo();
}
Указатель C++ - это адрес. Это просто разные термины, означающие одно и то же. Поэтому вам не нужно получать адрес "этого" указателя (который в основном означает "указатель на указатель" или "адрес адреса")
std :: cout << this;
Если вы хотите напечатать адрес указателя, наведите его на длинный. Обычно вы захотите напечатать его в шестнадцатеричном формате, а не decimal-, который легче читать. Вероятно, вы не хотите печатать & this-, который был бы адресом, где хранится указатель на класс, полагаю, вы хотите напечатать, где находится класс. Это будет просто cout << (long);
this
скрытый параметр для каждого вызова функции. В конце области действия функции&this
не будет действительным в любом случае. Что бы вы сделали с ним (в программе с хорошим поведением)?