C++ - Überladung der Statischen Funktion mit Nicht-Statische Funktion

Ich würde gerne drucken zwei unterschiedliche Dinge, je nachdem, ob eine Funktion aufgerufen wird, statisch mit Foo::print() oder von einer Instanz von Foo foo; foo.print();

EDIT: Hier ist eine Klassendefinition, die funktioniert definitiv nicht, da beantwortet ein paar Menschen schon.

class Foo {
    string bla;
    Foo() { bla = "nonstatic"; }

    void print() { cout << bla << endl; }
    static void print() { cout << "static" << endl; }
};

Jedoch, ist es eine gute Möglichkeit, dies zu erreichen Wirkung? Grundsätzlich würde ich gerne machen:

if(this is a static call)
    do one thing
else
    do another thing

Formuliert in einer anderen Art, ich weiß, PHP überprüfen können, ob der *this variable definiert ist oder nicht, um festzustellen, ob die Funktion aufgerufen wird, statisch. Funktioniert der C++ haben die gleiche Fähigkeit?

Warum nicht probieren Sie es und sehen,?
beide Versionen von print() trägt die gleiche Signatur. Und ich glaube nicht, dass Sie überlastet werden kann diese Weise.

InformationsquelleAutor Alan Turing | 2011-03-19

Schreibe einen Kommentar