0

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

示例代码:

#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;
}
4

3 回答 3

3

现在如何使用“obj1”访问“childPrint()”?

你不能。

obj1是 type Parent,它不包含任何名为 的方法childPrint。的实例Parent不会自动包含的实例Child(我认为 Java 会这样做),它们仍然是单独的类。您只能在 的实例上调用此方法Child

于 2021-07-20T08:43:33.960 回答
1

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

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

...

Parent::Child::childPrint();

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

于 2021-07-20T08:57:39.013 回答
1

obj1.Child::childPrint();

在此特定行中,您需要了解它childPrint()class Child. 所以,只有一个实例可以class Child调用childPrint()函数。

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

于 2021-07-20T08:52:32.253 回答