Alex Rivera | Logout

Using overloaded operators on pointers

Asked 2010-10-29T19:13:38.367
16

I overloaded the << operator of a class. How do I have to overload the operator if I want to use it on pointers, like the following?

class A {
    std::string operator<<(std::string&);
}

aInst << "This works";
aPointer << "This doesnt work";
aPointer->operator<<("Whereas this works but is useless");

I hope you can help me.

heinrich

Edit
Report

1 Answer

14

First off, to stick with standard conventions, your operator<< should be declared like this:

class A {
    A& operator<<(const std::string&);
};

Now, technically, you could achiever part of what you want by implementing the following global function:

A * operator<< ( A * a, const std::string& s ) { (*a) << s; return a; }

This would allow statements such as:

string s = "this will be printed."; aPointer << s;
aPointer << string("this will be printed");

However, you won't be able to write the following:

aPointer << "this will not compile.";

In any case, writing such an operator would be confusing, at best. You should live with the more simple syntax of

(*aPointer) << "this will be printed.";

and write code that sticks to established conventions to allow others (and yourself, in a few weeks) to read your code.

answered 2010-10-29T19:25:19.943

Your Answer