Deklaration von stl::list als Functionsparameter
-
Hallo zusammen
folgende Deklaration innerhalb der hpp ergibt leider eine Fehlermeldung innerhalb der Borland IDE beim versuch das Projekt zu compilieren
void __fastcall updateDaten(TGridView * gv, TMyQuery *q, TMDIChild *handle, std::list<FieldList *> l_FieldList);
Es scheitert an std::list<FieldList *> l_FieldList
Schlichte und ganz einfache Frage. Wie muss ich es richtig formulieren, so das der Compiler glücklich ist?
Vielen Dank für euere Lösung.
Gruss
Mirko
-
Hallo,
Wie lautet denn die Fehlermeldung? Die Deklaration ist ok.
-
Hi
OK die wäre natürlich hilfreich gewesen, sorry.
Also ganz ausführlich. Direkt nach dem Aufruf des Compilierens
kommt ein Popup "Fehler im Modul Unit11 Falsche Methodendeklaration in Klass TFunctionPool"
Gruss
Mirko
-
Poste mal ein wenig mehr Quelltext (Header). So kann man nichts erkennen.
-
Kein Problem die hpp
#ifndef Unit11H #define Unit11H //--------------------------------------------------------------------------- #include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> #include "CustomGridView.hpp" #include "CustomGridViewControl.hpp" #include "DBAccess.hpp" #include "GridView.hpp" #include "MemDS.hpp" #include "MyAccess.hpp" #include "ScrollView.hpp" #include <DB.hpp> #include "FieldInfo.h" #include "list.h" //--------------------------------------------------------------------------- class TFunktionsPool : public TForm { __published: // Von der IDE verwaltete Komponenten void __fastcall updateDaten(TGridView * gv, TMyQuery *q, TMDIChild *handle, std::list<FieldList *> l_FieldList); // void __fastcall updateDaten(TGridView * gv, TMyQuery *q, TMDIChild *handle); private: // Anwender-Deklarationen public: // Anwender-Deklarationen __fastcall TFunktionsPool(TComponent* Owner); }; //--------------------------------------------------------------------------- extern PACKAGE TFunktionsPool *FunktionsPool; //--------------------------------------------------------------------------- #endifDie Implementation
void __fastcall TFunktionsPool::updateDaten(TGridView * gv, TMyQuery * q, TMDIChild *handle, std::list<FieldList *> l_FieldList)
TMDIChild *handle)
{
;
}Gruss
Mirko
-
Ändere mal
#include "list.h"in
#include <list>
-
Hi Braunstein
OK, das ist schon mal passiert. Aber leider war das nicht der Punkt. Wobei ich natürlich zugebe das Deine Variante die elegantere ist.
Grundsätzlich klappen ja Listen schon und finden bei mir bereits verwendung. Ergo musste ich diese ja auch schon deklarieren.
Nur halt die Variante als Funktionsparameter scheinen rumzumaulen. Generell muss das doch aber gehen.
Gruss
Mirko
-
Hast Du schon mal versucht die Methodendeklaration von published nach public zu schieben?
Außerdem hängt bei der Implementierung noch ein
TMDIChild *handle)in der Luft. Ist vielleicht
aber auch nur ein "copy & paste"-Fehler.Gruß,
Alexander
-
Alexander hat recht. Einfach nach public oder privat verschieben.
Weiterhin solltest du dir überlegen, ob du die vielen includs brauchst. Da du nur Pointer verwendest kannst du ein Teil davon sicher auch durch Forwarddeklarationen ersetzen.
-
Hallo Ihre zwei
Perfekt, das war des Rätsels Lösung. Unterhalb von public klappt es ohne Probleme.
Vielen, vielen Dank
Gruss
Mirko