c++ - 在 vector 中的派生类上调用重载的 << 运算符

标签 c++ vector operator-overloading

假设您已经正确实现了 << 运算符,那么如何在派生类的 vector 上正确调用它?

假设您有 Base 类,从它衍生出 DerivedOne、DerivedTwo 等。然后在您的 main 中,您有一个指向各种派生类型对象的指针 vector 。类似的东西:

void showItems(vector<Base*>  items) {
    for (int i = 0; i < items.size(); i++) {
        cout << items[i];
    }
    cout << endl;
}

最佳答案

像这样实现:

class Base
{
public:
  virtual ostream& print(ostream&) const = 0;
};

ostream& operator <<(ostream& out, const Base& base)
{
  return base.print(out);
}

关于c++ - 在 vector 中的派生类上调用重载的 << 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25843195/

相关文章:

C++ 代码在不同操作系统上的编译方式不同

c++ - 如何解决 Visual C++ 编译器中的错误 C1001?

c++ - 用 sse 累加整数 vector

C++快速刷新桌面

c++ - arr[0] 的大小怎么是 8 个字节?

c++ - 将包含另一个 vector 的结构 vector 写入二进制文件

c++ - 对指针 vector 进行排序

c++ - operator= 重载分数数学的双指针

c++ - 多项式类 C++ 的问题

f# - F# : (/) 中的重载运算符