在 CPP 中访问嵌套 Class 成员函数

Accessing Nested Class Member Function in CPP

在嵌套的情况下 class,如何访问“Inner”或“Child”class 的成员函数?。 例如,我创建“obj1”的代码。现在如何使用“obj1”访问“childPrint()”?

example_code:

#include<iostream>
using namespace std;

/////////////////////////////////////////////////
class Parent
{
public:
    void print()
    {
        cout<<"this is from Parent"<<endl;
    }
    class Child
    {
    public:
        void childPrint()
        {
            cout<<"this is from Child"<<endl;
        }
    };
};



int main()
{
    Parent obj1;
    obj1.print();

    Parent::Child obj2;
    obj2.childPrint();

    obj1.Child::childPrint();///ERROR


    return 0;
}

Now how do I access the "childPrint()" with"obj1"?

你不能。

obj1Parent 类型,不包含任何名为 childPrint 的方法。 Parent 的实例不会自动包含 Child 的实例(我认为 Java 会做类似的事情),它们仍然是独立的 类。您只能在 Child.

的实例上调用此方法

obj1.Child::childPrint();

在这一行中,您需要了解 childPrint()class Child 的实例成员函数。因此,只有 class Child 实例 可以调用 childPrint() 函数。

如果 childPrint() 函数是 class Child 的静态成员函数(class 函数),那么可以在不创建任何实例的情况下调用它,并且不会在 Parent::Child::childPrint();.

如果你有一个静态方法,那么你可以调用它:

/////////////////////////////////////////////////
class Parent
{
public:
...
    class Child
    {
    public:
    static void childPrint() { cout<<"this is from Child"<<endl; };
    }
}

...

Parent::Child::childPrint();

这些是单独的 类,没有任何子 类 的自动实例化,反之亦然。