Howdy all. I just resubscribed about 5 minutes ago after about a 2-year break. Did I miss anything? Well to jump right in, anyone out there any good with C++? I've converted a Circle-based game to C++ just as far as getting it to compile with g++. In other words, I've not yet redesigned the architecture to use proper classes and object-orientedness. Anyhoo, I thought it would be swell to overload the operator<< for char_data in effect to replace send_to_char. I did this in the form of a template which follows: #include <strstream.h> template <class T> char_data * operator<<(char_data *ch, T msg) { ostrstream strout; // inherit ostream to get inserters strout << msg << ends; // insert message and NULL-terminate send_to_char(strout.str(), ch); // lock char* and send it strout.freeze(0); // unlock char* so class can clean up return ch; } Unfortunately, the compiler bitches about the fact that char_data is a struct rather than a class. Is there any way around this other than actually changing it into a class? Could I get away with just replacing "struct" with "class" in structs.h and adding the line "public:" at the top? If I go that way, I guess I might as well define char_data::send(). Obviously, I eventually want to protect all data members and provide access functions, but first things first. For now, I'd be happy ditching those sprintf(buf, ...)'s and coding: ch << "Brought to you by the numbers " << 4.7 << " and " << 47 << "\n\r" << "and the letter " << 'B' << "\n\r"; -- Brian +------------------------------------------------------------+ | Ensure that you have read the CircleMUD Mailing List FAQ: | | http://democracy.queensu.ca/~fletcher/Circle/list-faq.html | +------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/08/00 PST