V
Victor Irzak
Hello,
I have an ABC.
it supports:
ostream & operator <<
I also have a derived class that supports this operator.
How can I call operator << of the base class for derived object??? Is it
at all possible?
Here is an example. The line with // Error comment generates an error:
cannot create and instance of ABC.
TIA
#include <iostream>
using namespace::std;
class ABC {
protected:
int abc_member;
public:
virtual void onDraw() const = 0;
friend ostream & operator << (ostream &os, const ABC & o);
};
inline ostream & operator << (ostream &os, const ABC & o) {
os << "abc_member: " << o.abc_member;
return os;
}
class Derived : public ABC {
double der_member;
public:
Derived() {abc_member = 8; der_member=3.4f;}
virtual void onDraw() const {}
friend ostream & operator << (ostream &os, const Derived & o);
};
inline ostream & operator << (ostream &os, const Derived & o) {
os << "der_member: " << o.der_member;
return os;
}
int main () {
Derived * d = new Derived();
cout << *d << endl;
//cout << (ABC) *d << endl; // Error
return 0;
}
I have an ABC.
it supports:
ostream & operator <<
I also have a derived class that supports this operator.
How can I call operator << of the base class for derived object??? Is it
at all possible?
Here is an example. The line with // Error comment generates an error:
cannot create and instance of ABC.
TIA
#include <iostream>
using namespace::std;
class ABC {
protected:
int abc_member;
public:
virtual void onDraw() const = 0;
friend ostream & operator << (ostream &os, const ABC & o);
};
inline ostream & operator << (ostream &os, const ABC & o) {
os << "abc_member: " << o.abc_member;
return os;
}
class Derived : public ABC {
double der_member;
public:
Derived() {abc_member = 8; der_member=3.4f;}
virtual void onDraw() const {}
friend ostream & operator << (ostream &os, const Derived & o);
};
inline ostream & operator << (ostream &os, const Derived & o) {
os << "der_member: " << o.der_member;
return os;
}
int main () {
Derived * d = new Derived();
cout << *d << endl;
//cout << (ABC) *d << endl; // Error
return 0;
}