c++ - 访问派生类成员的基类方法

标签 c++

我有以下场景:

class num {
    public:
    void print(ostream* o); // Prints the n variable
};

class int_num : public num{
    public:
    int n; // Initialized by this class's constructor
};

class float_num : public num{
    public:
    float n; // Initialized by this class's constructor
};

class double_num : public num{
    public:
    double n; // Initialized by this class's constructor
};

我如何实现这样的方案

最佳答案

给它一个虚方法,在派生类型中实现:

class num {
 public:
    void print(ostream& o) const
    {  // Prints the n variable
      doPrint(o);
    }
 private:
    virtual void doPrint(ostream& os) const = 0;
};

class double_num : public num{
  public:
    double n; // Initialized by this class's constructor
 private:
  void doPrint(ostream& os) const 
  {
    os << n;
  }
};

关于c++ - 访问派生类成员的基类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14463179/

相关文章:

c++ - 返回标准流的编译器错误 C2448

c++ - C/C++ 经过的进程周期,不包括在断点处

c++ - Direct3D 9.0 交错非 fvf 顶点缓冲区

c++ - 如何在 C++ 中将文本文件解析为结构的不同元素?

c++ - 为什么 C++ 累积第三个参数类型导致编译失败

c++ - 如何向右旋转动态数组?

c++ - 查找预分配 vector C++ 的非空索引

c++ - 基于堆栈的迷宫探索

c++ - 检测Enter键以获取用于int类型的输入

c++ - 如何编写处理信号的跨平台 C++?