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();
    std::cout << f << std::endl;
    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.

  • 1
    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

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.

  • 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
  • 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. – defube Aug 23 '12 at 14:28

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.