Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

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;
    objB();
    return(0);
}

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
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
add comment

1 Answer 1

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

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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