簡體   English   中英

訪問嵌套類的成員

[英]Access members of nested class

class A
{
        class B
        {
                int x;
        }

public:
        void printX() { std::cout << ????; }
}

如何從A類函數訪問x變量? 我也不能使其靜止...

我嘗試了所有操作,但是它要么告訴我我需要一個對象才能訪問它,否則編譯器找不到該函數。

它要么告訴我我需要一個物體[...]

考慮一下。 因為這正是問題所在。

如果實例化一個A那么您也不會得到B 嵌套類不是封閉類的成員變量。 實際上,這只是更改類名稱空間的另一種方法。

因此,您需要一個B的實例。 也許是A的成員?

class A
{
        class B
        {
        public:
                int x;
        } mB;

public:
        void printX() { std::cout << mB.x; }
};

您永遠不會在A中聲明類B的實例 。您需要執行以下操作:

    class A
    {
            class B
            {
            public:
                    int x;
            };

            B b;

    public:
            void printX() { std::cout << b.x; }
    };

你不知道 您確實需要一個對象才能使用x變量。 您可以將其設為靜態。 您的示例的問題是x不公開。 將B放在A內並不能使B成為A的一部分,而只是改變B的范圍。

在此示例中,有點像您在繼承繼承。 這將為您帶來想要的效果(無需使用對象即可訪問所有B的方法和變量。)

Class B
{
protected:
    int x;
}
Class A : B
{
    void printX() { std::cout << x; }
}

暫無
暫無

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

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