调用重载<<向量中的派生类上的运算符

时间:2014-09-15 07:55:55

标签: c++ vector operator-overloading

假设你已经实现了<<运算符是否正确,如何在派生类的向量上正确调用它?

假设你有类Base,并从它DerivedOne,DerivedTwo等。然后在你的主要你有一个指向各种派生类型对象的指针向量。有点像:

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

1 个答案:

答案 0 :(得分:7)

实施以下内容:

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

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