【发布时间】:2017-03-10 08:13:00
【问题描述】:
如前所述,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 与a 共享同一个地址,如何访问foo 的this 指针?
使用this->foo 会引发错误:
test.cpp:20:23: error: 'struct A::<anonymous>' has no member named 'foo'
【问题讨论】:
-
在哪里你使用
this->foo?您能否为 failing 程序创建一个Minimal, Complete, and Verifiable Example? -
a & foo 确实会共享同一个地址 - 因为 foo 是 A 的第一个成员。这就是为什么知道对象的类型很重要。
-
我不明白这个问题。首先,在我看来
struct S完全无关紧要,您的问题只是关于A和A::foo。其次,A::foo::bar()确实访问“(A::)foo的this指针”。那么问题出在哪里? -
这里有一个提示:在
A中插入一个int变量(紧跟在public关键字之后),看看输出如何变化 -
我错误地理解了我的问题,实际上
foo中的this将指向foo,因此与a具有相同的地址,是他的第一个成员!那么如何访问foo中的a指针呢?
标签: c++ class pointers struct this