I'm relatively new to C++. Please excuse my terminology if it's incorrect. I tried searching around for an answer to my question, but I could not find it (probably because I couldn't phrase my question correctly). I'd appreciate it if someone could help me.
I am trying to write a class for creating strings that might contain the textual representation of objects or native types. Essentially, I have
private:
stringstream ss;
public:
template< typename T >
Message& operator<<( const T& value ) {
ss << value;
return *this;
}
The overloaded << operator takes some value and tries to stream it into a stringstream. I think my compiler is fine with this if the T
is something like int
or if the class T
defines the method operator std::string()
. However, if T
is some type like vector<int>
, then it no longer works because vector<int>
doesn't define operator std::string()
.
Is there anyway I could perhaps overload this operator so that if T
defines operator std::string()
, then I print the textual representation, and if it doesn't, I just print its address?
Thanks.