在 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"?
你不能。
obj1
是 Parent
类型,不包含任何名为 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();
这些是单独的 类,没有任何子 类 的自动实例化,反之亦然。
在嵌套的情况下 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"?
你不能。
obj1
是 Parent
类型,不包含任何名为 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();
这些是单独的 类,没有任何子 类 的自动实例化,反之亦然。