簡體   English   中英

一個類中的類訪問外部類的數據成員

[英]a in-class class access the outer class's data member

我試圖這樣做,

class Outer {
public:
    struct inner_t {
        void foo()
        {
            printf("%d", _x);
        }
    };
    int _x;
};

int main()
{
    Outer o;
    o._x = 10;
}

以上無法編譯錯誤:

錯誤:無效使用非靜態數據成員'Outer :: _ x'

但根據這篇文章inner_t確實可以訪問Outer::_x ,這有什么不對?

問題是: inner_t不知道從Outer讀取_x的實例。

如果你寫過(例如):

void foo(const Outer *o)
{
    printf("%d", o->_x);
}

或者如果_xOuter的靜態成員。 然后它應該工作(至少它不會給出任何錯誤)。

您確實可以訪問Outer類型的對象的_x . 您基本上嘗試以靜態方式訪問實例字段。 傳遞一個Outer實例然后使用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM