Seite 1 von 3

extern struct object

Verfasst: Mo Apr 09, 2012 10:23 am
von Kmitska
Hallöchen,

habe ein Problemchen:

Ich habe in einer *.h Datei ein Struct definiert:

Code: Alles auswählen

struct UserInformation
{
    string mailAddress;
    string popServer;
    string smtpServer;
    bool ssl_pop;
    bool ssl_smtp;
} User;
Und ein Objekt von UserInformation erschaffen.

Nun möchte ich dies in einer *.cpp Datei einbinden, die aber diese *.h Datei nicht miteinzieht (Also kein #include<>)

Ich würde das eigentlich so machen, klappt aber nicht:

Code: Alles auswählen

extern UserInformation User;
Könnt Ihr mir da helfen?
Danke im Voraus!

Kind regards,
Kmitska

Re: extern struct object

Verfasst: Mo Apr 09, 2012 10:52 am
von Bebu
Häh? Extern kann man in Headern nutzen, um z. B eine Globale Variable zu deklarieren, ohne ihr Speicher zuzuweisen. Nur so kannst du Variblen in Headern deklarieren, sonst meckert der Kompiler.
Wenn du dein Struct in einer Sourcedatei verwenden willst, dann binde den Header ein. Woher soll der Kompiler sonst wissen, was du von ihm willst?

Re: extern struct object

Verfasst: Mo Apr 09, 2012 10:54 am
von Kmitska
Ich implementier es auch in der Header-Datei, und anschließen möchte ich es bei der *.cpp Datei verwenden, fragt nicht wieso ich das so mache... GUI-Kram, ich werds versuchen normal zu gestalten, aber bis dahin...

Re: extern struct object

Verfasst: Mo Apr 09, 2012 11:02 am
von cloidnerux
Ich implementier es auch in der Header-Datei, und anschließen möchte ich es bei der *.cpp Datei verwenden, fragt nicht wieso ich das so mache..
Und warum bindest du dann den Header nicht mit ein?
Header sind dafür gedacht, dass man Definitionen da rein packt und die dann einbinden kann.

Re: extern struct object

Verfasst: Mo Apr 09, 2012 11:02 am
von Bebu
Du kommst nicht ohne den Header aus. Woher soll der Kompiler wissen, was Userinformation ist. Keine Kristallkugeln in der Computerwelt... tut mir leid. Du kannst höchstens das Struct komplett in die Source schubsen, aber das ist SEHR unschön.

Re: extern struct object

Verfasst: Mo Apr 09, 2012 11:05 am
von Kmitska
Also ich hab jetzt ein Header erstellt wo ich mein struct hab.

Diese Datei hab ich bei einer anderen *.h gepackt und bei *.cpp, wird leider nicht ausgeführt...

Re: extern struct object

Verfasst: Mo Apr 09, 2012 11:21 am
von Bebu
So, es tut mir leid, du lässt mir keine andere Wahl: http://www.proggen.org/doku.php?id=faq:frageformulieren
Was willst du erreichen, was hast du bereits, was erwartest du, was passiert stattdessen. Immer wenn du hier eine Frage stellst, läuft das auf ein Ratespiel hinaus. Ich helfe dir gerne, aber so ist das frustrierend.

Re: extern struct object

Verfasst: Mo Apr 09, 2012 11:28 am
von Kmitska
Hehe... :-)

Also ich versuchs dann mal zu erklären:

Ich habe ein Header Datei, wo ich einen struct deklariere und implementiere.
In der Header-Datei ist auch die Source (Wo dann auch der struct implementiert wird)
Nun aber, möchte ich diese Informationen in einer anderen Datei (*.cpp) bearbeiten.

Hoffe das dies jetzt ausführlich war.

Re: extern struct object

Verfasst: Mo Apr 09, 2012 11:36 am
von Bebu
Mir klingelt da gerade was. Du hast vor ein paar Tagen den Rat bekommen, Source und Header sauber zu trennen. Hast du den schon umgesetzt? Hast du überall saubere Watchguards gesetzt? Was für eine Fehlermeldung bekommst du vom Kompiler? Ist dein Source so groß und/oder Geheim, das hier keiner mal drübersehen kann/darf?

Re: extern struct object

Verfasst: Mo Apr 09, 2012 11:52 am
von Kmitska
Die Source ist immer heilig :-P

Also hier aber ein Teil davon, hab jetzt auch bisschen umgeändern, in der Header-Datei sind nur noch die Deklarationen (Habs geschafft es zu trennen), weil das ein "bisschen" komplexes GUI-Projekt ist habe ich die Fenster in diverse Files geteilt.

Also wie schon gesagt, das hier steht nun in der *.h Datei:

Code: Alles auswählen

struct UserInformation
{
    string mailAddress;
    string popServer;
    string smtpServer;
    bool ssl_pop;
    bool ssl_smtp;
};
Und in der einen Datei, wo ich es implementiere:

Code: Alles auswählen

#include ...
UserInformation User;
[...]
        User.mailAddress = mail->GetValue();
        User.popServer = pop->GetValue();
        User.smtpServer = smtp->GetValue();
        User.ssl_pop = boxSSL_POP->GetValue();
        User.ssl_smtp = boxSSL_SMTP->GetValue();
[...]
Und die andere Datei, wo ich es benutzen möchte:

Code: Alles auswählen

#include
[...]
extern UserInformation User;
[...]