hi there,
I have an issue when overloading <<. -
string operator << (room * ¤tPlayerLocation);
-
-
-
string room::operator << (room * ¤tPlayerLocation)
-
{
-
return roomDescription;
-
-
}
-
when I call this function:
cout << currentPlayerLo cation;
Its cout's the actual memory address - 00346380 instead of the string roomDescription .
What am I doing wrong?
8 1716 Ganon11 3,652
Recognized Expert Specialist
From www.cplusplus.com, the function header for the ostream's << operator is:
"ostream& operator<< (ostream& os, const string& str);"
So, to overload it, you need to make a function like:
"ostream& operator<< (ostream&, const yourClass&);"
From www.cplusplus.com, the function header for the ostream's << operator is:
"ostream& operator<< (ostream& os, const string& str);"
So, to overload it, you need to make a function like:
"ostream& operator<< (ostream&, const yourClass&);"
thankyou for the reply.
so you say to make a function like:
"ostream& operator<< (ostream&, const yourClass&);
would this equate to:
string& operator<<(stri ng&, room const * ¤tPlayerL ocation);
if so, it doesent work. It puts out error message that it has too many parameters.
Ive played around with various formats with this method.
Surely there has to be a way
Ganon11 3,652
Recognized Expert Specialist
No, a string is nothing like an ostream. Your function has to accept an ostream parameter, use that ostream operator to output whatever portions of your class you wish to be seen, and then return that ostream variable. For example, if I had a clock class, my operator<< function might look like: - ostream& operator<<(ostream& out, const clock& myClock) {
-
out << myClock.hours << ":" << myClock.minutes << ":" << myClock.seconds;
-
return out;
-
}
Now, when I write
what is actually happening is more like this: - operator<<(myClock.operator<<(cout, myClock), endl);
Your operator<< cannot return a string nor expect a string argument if it is to properly overload the << operator.
Add to Ganon11's comments that since the operator<< must have an ostream& as a first argument, it cannot be a member function. (Recall that member functions have the this pointer as a hidden first argument). Therefore, if your operator<< needs access to class private data, it will need to be a friend function.
Thankyou both for the reply.
I misunderstood the definition for the overloading teplate, I have made the changes and I'm still getting the memory address.
I think it is because I am using a pointer: -
ostream& operator << (ostream &out, const room * ¤tPlayerLocation)
-
{
-
out << currentPlayerLocation->roomDescription;
-
return out;
-
}
Ganon11 3,652
Recognized Expert Specialist
Well, I don't think you need to use a pointer: it can just be - ostream& operator << (ostream &out, const room ¤tPlayerLocation);
Also, is roomDescription a private data member? If so, this should be a friend function: - friend ostream& operator << (ostream &out, const room ¤tPlayerLocation)
defined in the room header file.
I think it is because I am using a pointer:
You weren't using a pointer. You were using a reference to a pointer. That's equivalent to using a pointer to a pointer.
Sign in to post your reply or Sign up for a free account.
Similar topics |
by: Tatu Portin |
last post by:
1: #include <iostream>
2:
3: typedef struct {
4: double r;
5: double i;
6: } complex;
..
..
..
24: ostream & operator<< (ostream &str, const complex &a)
|
by: pmatos |
last post by:
Hi all,
I have the following code:
class test {
public:
test(const std::string *n) : name(n) {}
virtual ~test() {}
const std::string * getName() { return name; }
|
by: pmatos |
last post by:
Hi all,
I'm having a problem and for illustration purposes I developed code
that shows what the problem is about. However, any comment on the code
which is not directly about this issue is surely welcome. I have 3
classes, A is abstract, B and C inherit from A and then I create a
vector with B's and C's and print them. Of course, I overload...
|
by: zeroYouMustNotSpamtype |
last post by:
Hi,
Describing this problem will be a bit long winded, but please bear
with me:
I've got three files in my project: permuts.h, permuts.cpp, and
braids.cpp (some content from wich will eventually be moved into
braids.h). Both cpp files include the h file. Permuts.h contains the
Permutation class, for which I needed to overload <<. Doing...
|
by: Suresh Tri |
last post by:
Hi all,
I was trying to overload '<' operator for (varchar,varchar). But in
the function which handles the comparision I want to use the previous
'<' operator.. but it is going into a recursion.
My simplified code looks like :
create or replace function orastringcmp (varchar, varchar) returns
boolean as
'declare
| |
by: atomik.fungus |
last post by:
Hi, as many others im making my own matrix class, but the compiler is
giving me a lot of errors related to the friend functions which
overload >> and <<.I've looked around and no one seems to get the same
error. Here is the code of the class template< class T > class Matrix
{ friend ostream &operator << <>( ostream &, const Matrix< T...
|
by: Peter v. N. |
last post by:
Hi all,
Maybe this has been asked a million times before.
In that case I'm sorry for being to lazy to search
the Internet or look it up in a decent C++ reference:
I read in O'Reilly's C++ Pocket reference (see also
http://www.oreilly.com/catalog/cpluspluspr/errata/ ,
btw not that bad),
that the operator << has to be overloaded like this:
|
by: Ook |
last post by:
The following code compiles and runs. In my overloaded operator<<, I
call Parent.stuff. I would expect it to call Child.stuff, since Child
is the child class, but it does not. What am I missing, and how can I
get it to call Child.stuff. Eventually I'll have different child
classes, and I need it to call stuff() from the associated child...
|
by: johnmmcparland |
last post by:
Hi all,
I know it is possible to overload the operators and < in C++ but how
can I do this.
Assume I have a class Date with three int members, m_day, m_month and
m_year. In the .cpp files I have defined the < and operators;
bool Date::operator<(const Date& d)
{
|
by: marktang |
last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main...
|
by: Hystou |
last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it.
First, let's disable language...
| |
by: Oralloy |
last post by:
Hello folks,
I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>".
The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed.
This is as boiled down as I can make it. ...
|
by: jinu1996 |
last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that...
|
by: tracyyun |
last post by:
Dear forum friends,
With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the...
|
by: isladogs |
last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM).
In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules.
He will explain when you may want to use classes...
|
by: conductexam |
last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one.
At the time of converting from word file to html my equations which are in the word document file was convert...
|
by: 6302768590 |
last post by:
Hai team
i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
| |
by: muto222 |
last post by:
How can i add a mobile payment intergratation into php mysql website.
| |