Ich habe zwei Dateien, my_program.cpp
und seine Kopfzeile my_program.h
.Seltsames C++ - Verhalten mit Iostream und Wstring
my_program.cpp
enthält nur dies:
#include "my_program.h"
using namespace std;
my_program.h
einen Zeiger auf eine Funktion enthält, die eine wstring
zurückkehrt, wie folgt:
using namespace std;
typedef wstring (*my_function)(wstring, int, int, int, int);
Das Programm kompiliert nicht in diesem Zustand (stoppt bei typedef ... sagt, dass ISO C++ die Deklaration von 'wstring' ohne Typ verbietet, aber wenn ich #include <iostream>
vor #include "my_program.h"
in der .cpp hinzufüge Datei, kompiliert das Programm auf wundersame Weise.
Warum passiert das? Ich hoffe nur, dass ich keinen dummen Fehler gemacht habe und jetzt werde ich ausgelacht.
Ich kann diese Typdef-Deklaration nicht vollständig lesen, aber ... wo ist Ihr neuer Typname in diesem Typedef? – Frizi
Haben Sie '#' in 'my_porgram.h'? –
scientiaesthete
@Frizi 'my_function' ist der Name des typedef. Es ist ein Zeiger auf eine Funktion, die wstring zurückgibt und wstring, int, int ... als Parameter hat. –