extern struct object

Schnelle objektorientierte, kompilierende Programmiersprache.
Kmitska
Beiträge: 349
Registriert: Fr Sep 23, 2011 8:49 pm
Wohnort: Karlsruhe, Pforzheim

extern struct object

Beitrag von Kmitska » Mo Apr 09, 2012 10:23 am

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

Benutzeravatar
Bebu
Beiträge: 562
Registriert: Mi Okt 21, 2009 6:19 pm
Wohnort: In der Nähe von Salzburg - Bin aber kein Österreicher!

Re: extern struct object

Beitrag von Bebu » Mo Apr 09, 2012 10:52 am

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?
Wer immer nach dem Unerreichbaren jagt, der wird irgendwann auf die Schnauze fallen!

Kmitska
Beiträge: 349
Registriert: Fr Sep 23, 2011 8:49 pm
Wohnort: Karlsruhe, Pforzheim

Re: extern struct object

Beitrag von Kmitska » Mo Apr 09, 2012 10:54 am

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...

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: extern struct object

Beitrag von cloidnerux » Mo Apr 09, 2012 11:02 am

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.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Bebu
Beiträge: 562
Registriert: Mi Okt 21, 2009 6:19 pm
Wohnort: In der Nähe von Salzburg - Bin aber kein Österreicher!

Re: extern struct object

Beitrag von Bebu » Mo Apr 09, 2012 11:02 am

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.
Wer immer nach dem Unerreichbaren jagt, der wird irgendwann auf die Schnauze fallen!

Kmitska
Beiträge: 349
Registriert: Fr Sep 23, 2011 8:49 pm
Wohnort: Karlsruhe, Pforzheim

Re: extern struct object

Beitrag von Kmitska » Mo Apr 09, 2012 11:05 am

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...

Benutzeravatar
Bebu
Beiträge: 562
Registriert: Mi Okt 21, 2009 6:19 pm
Wohnort: In der Nähe von Salzburg - Bin aber kein Österreicher!

Re: extern struct object

Beitrag von Bebu » Mo Apr 09, 2012 11:21 am

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.
Wer immer nach dem Unerreichbaren jagt, der wird irgendwann auf die Schnauze fallen!

Kmitska
Beiträge: 349
Registriert: Fr Sep 23, 2011 8:49 pm
Wohnort: Karlsruhe, Pforzheim

Re: extern struct object

Beitrag von Kmitska » Mo Apr 09, 2012 11:28 am

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.

Benutzeravatar
Bebu
Beiträge: 562
Registriert: Mi Okt 21, 2009 6:19 pm
Wohnort: In der Nähe von Salzburg - Bin aber kein Österreicher!

Re: extern struct object

Beitrag von Bebu » Mo Apr 09, 2012 11:36 am

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?
Wer immer nach dem Unerreichbaren jagt, der wird irgendwann auf die Schnauze fallen!

Kmitska
Beiträge: 349
Registriert: Fr Sep 23, 2011 8:49 pm
Wohnort: Karlsruhe, Pforzheim

Re: extern struct object

Beitrag von Kmitska » Mo Apr 09, 2012 11:52 am

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;
[...]

Antworten