I have a simple inheritance structure:
- Base <- Derived1
- Base <- Derived2
I want to overload << and >> operators to input and print data in objects Derived1 and Derived2 classes as a reference to Base class.
Can I declare some kind of virtual functions? Like this :
virtual std::ostream& operator<<(std::ostream& os, const Base& obj) = 0;
virtual std::istream& operator>>(std::istream& is, Base& obj) = 0;
in my Base class, and override them in Derived1 and Derived2 classes?
I want to do some things like that:
std::vector<Base&> a;
... push reference to Derived1 and Derived2 objects ...
for (auto i = a.begin(); i != a.end(); ++i) std::cin >> (*i);
for (auto i = a.begin(); i != a.end(); ++i) std::cout << (*i);