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