我有一个基类,我们称它为 base_t
。 base_t
有一个名为 void render()
的函数。我希望从 base_t
派生的所有类都可以访问该函数,但不能访问其他类。渲染函数将在 base_t
中定义为 virtual void render() = 0;
使其成为纯虚拟的。
我如何在 C++ 中实现这一点?通过 friend ?还是有其他方法可以做到这一点?
为了更清楚,我希望类 A
(派生自 base_t
)能够访问函数 render()
在 B
类中(也派生自 base_t
),它由 A
和 B
实现,但在中定义为纯虚拟base_t
.
这是一个例子:
class base_t
{
private:
virtual void render() = 0;
};
class A : public base_t
{
private:
virtual void render()
{
// Do Stuff
}
};
class B : public base_t
{
public:
void dostuff(A *classA)
{
// here I want to call render!
classA->render();
}
private:
virtual void render()
{
// Do Stuff
}
};
最佳答案
简单的怎么样:
class base_t
{
private:
virtual void render() = 0;
protected:
void renderOther(base_t& other){
other.render();
}
};
B可以通过保持正确封装的接口(interface)方法渲染A。
关于c++ - 仅为具有相同基类的类授予对函数的访问权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55572186/