前述のように、this
ポインタは、クラスで定義された構造体で呼び出されたときにどのように動作しますか? のは、私は次のコードを持っているとしましょう:この出力を生成クラス内の構造体、 "this"はどのように機能しますか?
class A {
public:
struct {
void bar() { std::cout << this << std::endl; }
} foo;
};
int main() {
A a; a.foo.bar();
std::cout << &a << std::endl;
std::cout << &a.foo << std::endl;
}
:
0x62fe9f
0x62fe9f
0x62fe9f
a.foo
はどのようfoo
のthis
ポインタに1つのアクセスはできる、a
と同じアドレスを共有しますか? this->foo
を使用して
がエラーを発生させる:
test.cpp:20:23: error: 'struct A::<anonymous>' has no member named 'foo'
*ここでは 'this-> foo'を使用していますか? *失敗した*プログラムの[最小限の完全で検証可能な例](http://stackoverflow.com/help/mcve)を作成してください。 –
a&fooは実際には同じアドレスを共有します.fooはAの最初のメンバーですから、オブジェクトの型を知ることが重要です。 – UKMonkey
私はその質問を理解していません。まず、 'struct S'は完全に無関係です。あなたの質問は' A'と 'A :: foo'だけです。次に、 'A :: foo :: bar()' *は(A::) 'foo'の' this'ポインタにアクセスします。それで問題は何ですか? – zwol