c++ - 仅为具有相同基类的类授予对函数的访问权限

标签 c++

我有一个基类,我们称它为 base_tbase_t 有一个名为 void render() 的函数。我希望从 base_t 派生的所有类都可以访问该函数,但不能访问其他类。渲染函数将在 base_t 中定义为 virtual void render() = 0; 使其成为纯虚拟的。

我如何在 C++ 中实现这一点?通过 friend ?还是有其他方法可以做到这一点?

为了更清楚,我希望类 A(派生自 base_t)能够访问函数 render()B 类中(也派生自 base_t),它由 AB 实现,但在中定义为纯虚拟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/

相关文章:

c++ - 为什么 sizeof(std::stack<int>) 这么大?

C++0x : uniform_real_distribution is not a member of std

c++ - Qt:更新qwidget的一个区域

c++ - 静态断言类型 A 可以从类型 B 构造

c++ - 找不到 CreateProcess() C++ 文件

c++ - 减少参数数量

c++ - 使用指向类的指针访问成员变量

c++ - 无法在程序中获得正确的输出

c# - 无法使用 C# TCP 服务器和 C++ TCP 客户端接收消息

c++ - 取消引用指向未知类型变量的指针