访问嵌套类的成员

时间:2014-01-15 18:07:55

标签: c++ nested-class

class A
{
        class B
        {
                int x;
        }

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

如何从A类函数中访问x变量?我不能让它静止......

我尝试了一切,但它要么告诉我需要一个对象才能访问它,否则编译器找不到该功能。

3 个答案:

答案 0 :(得分:2)

  

它要么告诉我需要一个对象[...]

想一想。因为这正是问题所在。

如果您实例化A,则不会获得B 。嵌套类不是封闭类的成员变量。它实际上只是改变类名称空间的另一种方式。

因此,您需要一个B的实例。也许是A的成员?

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

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

答案 1 :(得分:1)

您没有在A中声明B类的实例。您需要执行以下操作:

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

            B b;

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

答案 2 :(得分:0)

你没有。您需要一个对象才能使用x变量。但是你可以让它静止。你的例子的问题是x不公开。将B放在A中并不会使B成为A的一部分,它只会改变B的范围。

从这个例子来看,它有点像你继承之后。这将为您提供所需的效果(无需制作对象即可访问所有B的方法和变量。)

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