Zeiger auf deque Objekte und Funktionen
-
Hallo,
Ich versuche eine einen Zeiger auf eine deque Struktur an eine Funktion zu übergeben die dann damit weiterarbeitet. Ich habe mit aus dem was ich über Zeiger weiß und das was ich hier teils im Forum gelesen habe folgenden Code zusammengebastelt:
... //Initaliesierung static deque<VOKABEL_DATEN> vok_daten; ... //Aufruf der Funktion NachsteVokabel(&vok_daten, &vok_stats); ... //Funktionsdefintion void NachsteVokabel(deque<VOKABEL_DATEN> *voks, VOKABEL_STATS* stats) { .... } ...
Ich kriege allerdings bei Dev-Cpp folgenden Compilerfehler:
169 D:\Programmierung\C++\voclearn\main.cpp
cannot convert `std::deque<VOKABEL_DATEN,
-
da fehlt die andre hälfte der fehlermeldung
-
Nö die andere Hälfte gibt es nicht. Aber die 169 ist die Zeile mit dem Aufruf der Funktion NachsteVokabel
-
sicher fehlt da was, immerhin wurde der typ von deque mittendrin abgebrochen, ausserdem fehlt noch die angabe wohin er das nicht converten kann
-
Ja, aber das ist leider bei Dev-Cpp so, nach einige Übredungskunst konnte ich die komplette Fehlermeldung doch noch finden:
main.cpp:169: cannot convert `std::deque<VOKABEL_DATEN,
std::allocator<VOKABEL_DATEN> >' to `VOKABEL_DATEN' for argument `1' to `
void NachsteVokabel(VOKABEL_DATEN*, VOKABEL_STATS*)'
-
Du hast wahrscheinlich NachsteVokabel vorher anders deklariert als später definiert.
-
Danke, jetzt gehts!!!!!!
Allerdings habe ich noch eine kleine Frage, wie kann ich jetzt in der Funktion mit dem Zeiger auf den Operator[] zugreifen?
-
Hat keiner Ahnung?
-
(*voks)[25]
natürlich. BTW warum übergibst du die Deque eigentlich als Zeiger und nicht als Referenz?
-
Weil ich in einem Programm arbeite wo viele vordefinierte Funktionen auch Zeiger benötigen (WinApi). Da ich jetzt daher einiges ebenfalls mit Zeigern gemacht habe habe ich mich entschieden alles mit Zeigern zu machen. Das gleiche gilt auch für chars anstelle von strings.
-
Aua. So kommen Altlasten zustande. Die WinAPI ist (auch) für C, da kann es keine Strings oder Referenzen geben. Deswegen solltest du diesen Stil aber noch lange nicht übernehmen.