Take the 2-minute tour ×

I was experimenting with new overloaded operators, I have created one void operator and another one that returns something when it's called:

#include <iostream>

struct chichachicha{
    int operator()(){
        return 25;

struct boomboom{
    void operator()() {
        std::cout << "Hi folks!" << std::endl;

int main(){
    chichachicha objC;
    int f = objC();
    boomboom objB;

Is this the best way to write a code that does that?

How can I write an operator that can be called from anywhere in the code without instantiating the associated struct, that returns void/nothing and only prints a string of text? I'm not considering static methods, just operators.

share|improve this question
The whole point of operator is to operate on something. If you don't want something, you don't want an operator. Probably a free function (the whole "everything should be in a class" mentality is alien to C++; things should be in namespaces). –  Jan Hudec Aug 16 '12 at 8:33
The question sounds a bit like "I have a hammer, now how do I screw in this screw with it". Could you put in more detail about what you want to achieve without presuming that it should involve operator()? –  Jan Hudec Aug 16 '12 at 8:35
add comment

1 Answer

up vote 4 down vote accepted

Despite "I'm not considering static methods, just operators", the statement immediately before it suggests you are asking for a static operator(). If this were possible, the most vexing parse would be much more vexing!

Upon further inspection, it reads like you are basically in the market for a static function. The whole purpose of operator() is to make a functor. If you want a polymorphic version of operator(), I'm afraid you'll have to instantiate something somewhere.

share|improve this answer
i was experimenting with namespaces, but apparently i can't do more than what i can do in the main. –  user827992 Aug 16 '12 at 4:51
+1: For link to most vexing parse :) –  Ozair Kafray Aug 16 '12 at 6:04
Why a static function? A simple free function would do that, too. –  sbi Aug 23 '12 at 10:49
I use "static" and "free" interchangeably. Though static is often used to refer to an unbound function member of a class, the compiler treats them the same way. –  Frob Aug 23 '12 at 14:28
add comment

Your Answer


