Re: Polymorphism and ostream &operator<<()
This is a MIME GnuPG-signed message. If you see this text, it means that
your E-mail or Usenet software does not support MIME signed messages.
The Internet standard for MIME PGP messages, RFC 2015, was published in 1996.
To open this message correctly you will need to install E-mail or Usenet
software that supports modern Internet standards.
--=_mimegpg-commodore.email-scan.com-22656-1245205101-0001
Content-Type: text/plain; format=flowed; charset="US-ASCII"
Content-Disposition: inline
Content-Transfer-Encoding: 7bit
Jeff Dege writes:
One obvious way to make this work is to provide some sort of output
member function within the classes, marked virtual so that we get the
polymorphism we desire, then to implement an ostream &operator<<() on the
parent class that calls that member function:
class Parent;
std::ostream &operator<<(std::ostream &o, const Parent &parent)
{
return o << Parent.to_string();
}
But I can envision situations where this might not be an ideal solution.
If the internal representation of an object might result in a very large
string, this approach could have significant performance penalties.
In that case:
class Parent;
std::ostream &operator<<(std::ostream &o, const Parent &parent)
{
return parent.to_stream(o);
}
Then, do whatever you want in parent::to_stream(std::ostream &o);
--=_mimegpg-commodore.email-scan.com-22656-1245205101-0001
Content-Type: application/pgp-signature
Content-Transfer-Encoding: 7bit
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
iEYEABECAAYFAko4Um0ACgkQx9p3GYHlUOJK8wCfSbExz3R3KZkMut+jv6MSj9d5
b5oAnj/pxk9SUjinVPCOpVLTCbWJAjGU
=BnxL
-----END PGP SIGNATURE-----
--=_mimegpg-commodore.email-scan.com-22656-1245205101-0001--