Use covariant return type for clone() -------------------------------------
Key: AMQCPP-34 URL: https://issues.apache.org/activemq/browse/AMQCPP-34 Project: ActiveMQ C++ Client Issue Type: Improvement Components: CMS Impl Affects Versions: 1.1 Reporter: Albert Strasheim Assigned To: Nathan Mittler Attachments: covariant-clones.diff The cms::Message type has a pure virtual clone() method that returns a cms::Message*. cms::BytesMessage doesn't have a clone method. So it continues down the inheritance chain until we get to classes like activemq::connector::stomp::commands::TextMessageCommand which implement clone() and define it to return cms::Message*. This means that in my message listener I have to cast the result of a BytesMessage->clone() (which I already know is a BytesMessage) to BytesMessage before I can use it as such. Instead, BytesMessage should override clone() with another pure virtual that returns cms::BytesMessage. I think this is called a covariant return type. After that, TextMessageCommand's clone should probably be modified to return TextMessageCommand*. I don't know if there's anything in between that warrants a clone with a covariant return type. Fixing this will make the library slightly easier to use. Basic patch attached. There's probably more places to fix. Patch also has a few typo fixes. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: https://issues.apache.org/activemq/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira