繁体   English   中英

从成员结构的成员函数中访问类的成员?

[英]Accessing a class's member from within a member struct's member function?

从以下代码:

#include <iostream>
#include <string>
using namespace std;

class A
{
    public:
    A() { name = "C++"; }
    void read();

    private:
    string name;
    struct B
    {
        char x, y;
        int z;
        void update();
    } m, n, o;
};

void A::B::update()
{
    cout << this->A::name;
}

void A::read()
{
    m.update();
}

int main() {
    A a;
    a.read();
    return 0;
}

编译时,我收到以下错误:

prog.cpp: In member function 'void A::B::update()':
prog.cpp:23:19: error: 'A' is not a base of 'A::B'
  cout << this->A::name;

如何从成员结构的成员函数中打印A的name变量? (具体来自A::B::update()

嵌套类独立于封闭类。

但它是独立的,并且没有对封闭类的this指针的特殊访问权限。

所以你需要将一个封闭类的实例传递给它,或者让它保持一个(作为成员)。

void A::B::update(A* pa)
{
    cout << pa->name;
}

void A::read()
{
    m.update(this);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM