Bin mal wieder blind... (STL) STL-Bug?
-
Ist natürlich schöner, aber dennoch: das kann doch nicht standardkonform sein? Ob man nun vor der Funktion '&' schreibt oder nicht ist bei Nicht-Elementfunktion doch AFAIK egal?! Naja, danke für den Hinweis, jetzt kann ich weitermachen!

Edit: Dein letztes Beispiel ist doch für C++98 vollkommen konform? Es funktionier auf jeden Fall in VS 2008, auch wenn man doch lieber das schreiben sollte:
void (*f)() = print_help; f();
-
Und das funktioniert leider auch nicht:
command_table[L"help"] = &print_help;
-
*hust* doch tut es
Zeig mal Code oder/und Fehlermeldung 
-
Probiers doch mal so:
typedef void(*funcPtr)(); std::map<std::wstring, funcPtr> command_table; command_table.insert(std::make_pair(L"help", &print_help)); // & ist notwendig command_table[L"help"]();Getestet in VS 2010.
-
Nochmal eine kurze Nachfrage...
Wofür steht das L vor dem "Test" String?
Weiß nämlich nicht, wie ich mir eine Antwort ergooglen könnte ^^
-
Newbie19 schrieb:
Nochmal eine kurze Nachfrage...
Wofür steht das L vor dem "Test" String?
Weiß nämlich nicht, wie ich mir eine Antwort ergooglen könnte ^^Eine Zeichenkette mit dem Präfix L, wie etwa
L"help"ist eine Zeichenkette von WideChars. Ihr Typ ist
const wchar_t[]
-
Ad aCTa schrieb:
I[...]Ob man nun vor der Funktion '&' schreibt oder nicht ist bei Nicht-Elementfunktion doch AFAIK egal[...]
Nein, ist es nicht. Wie bei allen Dingen für die man eine Referenz haben will, muss man auch bei Funktionen den Referenzoperator davor schreiben.
-
Es ist ein Adressoperator, den man auch weglassen kann.
Wie wäre es denn mit
functionObjekten?
-
> Nein, ist es nicht. Wie bei allen Dingen für die man eine Referenz haben will, muss man auch bei Funktionen den Referenzoperator davor schreiben.
Ich will ja keine Referenz, sondern einen Zeiger. Und Funktionen bilden da eigentlich eine Ausnahme, wo man den Adress-Operator nicht angeben muss. In meinen anderen VS 2008-Implementierungen habe ich es auch so gemacht, und ich glaube mich zu erinnern, dass in "Die C++ Programmiersprache" ein ähnliches Beispiel zu finden war. Oder ich habe da noch eine gewaltige Wissenslücke gehabt.

Auf jeden Fall danke für die Hilfe!
-
Ad aCTa schrieb:
Oder ich habe da noch eine gewaltige Wissenslücke gehabt.
Nein, so wie Arrayausdrücke beim kleinsten Anzeichen von Gefahr in einen Zeiger umgewandelt werden, werden (lvalue-)Funktionsausdrücke ebenso implizit in Funktionszeiger umgewandelt wenn nötig (4.3). Zusätzlich wird - was hier bei make_pair eine Rolle spielt - eine Funktionsargument als Funktionszeiger deduziert (14.8.2.1/2 2. Alt).