1. ホーム
  2. c++

[解決済み] このアドレス

2022-03-05 13:32:29

質問

のアドレスを探そうとしています。 this のポインタを使用していますが、このコードは奇妙な表示をしています。 というエラーが発生します。

#include <iostream>
using namespace std;
class Base
{
    public:
        void test()
        {
            void *address_of_this =&this;
            cout<<address_of_this<<endl;
        }
};

int main()
{   Base k;
    k.test();

    return 0;
}   //error non-lvalue in unary'&'   

このエラーについて教えてください。
のアドレスを取ることの何が違法なのかも指摘する。 this ?

解決方法は?

this は、quot;カレントオブジェクトへのアドレスを含むポインタです。これはどこかに保存される(あるいは変更される可能性のある)変数ではなく、これらのプロパティを持つ特別なキーワードです。

そのため、そのアドレスを取得しても意味がありません。もし、"current object"のアドレスを知りたければ、単に出力すればよいのです。

std::cout << this;

として保存することもできます。

void* a = this;