一般来说,当它们共享相同的 parent class 时,有没有办法从另一个 child class 访问 Child class ?
In general, is there a there a way to access a Child class from another child class when they both share the same parent class?
那么让我们考虑一下我们有一个 Parent class
class Parent
{
};
然后我有两个childclass
class Child1 : public Parent
{
void AccessFunction();
}
和
class Child2 : public Parent
{
void FunctionBeingAccessed();
}
其中
void Child1::AccessFunction()
{
FunctionBeingAccessed();
}
可能吗?
编辑:
感谢您的回答!
所以我问这个的原因是因为我有第三个 class GrandChild,我正在寻找一种方法让它成为 Child of [=45] =]ALL Parent Class 的 Child class,尽管它们是不同的。
有办法吗?
编辑 2:
更好地解释我的问题。
所以我有一个玩家、物品和级别 class,他们是 3dmodel class 的 child。我想使它们的碰撞 class 成为 child。所以我需要使用虚拟继承
我相信是可以的,但是你得把FunctionBeingAccessed();
的保护等级设置成public。 类 的默认保护级别是 private,因此您的代码将无法运行。
将void FunctionBeingAccessed();
改为:
class Child2 : public Parent
{
public:
void FunctionBeingAccessed();
}
应该可以。
您可以将 Child1
声明为 Child2
的友元,然后类型 Child1
的对象可以访问 Child2
的 private/protected 方法。
那么让我们考虑一下我们有一个 Parent class
class Parent
{
};
然后我有两个childclass
class Child1 : public Parent
{
void AccessFunction();
}
和
class Child2 : public Parent
{
void FunctionBeingAccessed();
}
其中
void Child1::AccessFunction()
{
FunctionBeingAccessed();
}
可能吗?
编辑: 感谢您的回答!
所以我问这个的原因是因为我有第三个 class GrandChild,我正在寻找一种方法让它成为 Child of [=45] =]ALL Parent Class 的 Child class,尽管它们是不同的。
有办法吗?
编辑 2:
更好地解释我的问题。
所以我有一个玩家、物品和级别 class,他们是 3dmodel class 的 child。我想使它们的碰撞 class 成为 child。所以我需要使用虚拟继承
我相信是可以的,但是你得把FunctionBeingAccessed();
的保护等级设置成public。 类 的默认保护级别是 private,因此您的代码将无法运行。
将void FunctionBeingAccessed();
改为:
class Child2 : public Parent
{
public:
void FunctionBeingAccessed();
}
应该可以。
您可以将 Child1
声明为 Child2
的友元,然后类型 Child1
的对象可以访问 Child2
的 private/protected 方法。