Forum: PC-Programmierung Visual Studion Code im Header?


von Mario (Gast)


Lesenswert?

Hallo,

ich wollte einmal fragen, warum Visual Studio 2008 den Code im Header 
File anlegt, wenn ich ein Ereignis eines Steuerelementes anlege. Bisher 
war ich der Meinung, dass der Code in die *.cpp Dateien kommt und in den 
Header Files nur deklarationen usw. stehen.

Wie macht ihr denn das? Schreibt ihr wirklich den Code im Header File?

Gruß Mario

von Klaus W. (mfgkw)


Lesenswert?

ja, bei C++-Klassen häufig.
Zumindest solange der Code halbwegs kompakt ist.

Vorteil:
- gleich inline (schnell ist immer toll)
- keine Objektdatei oder Lib nötig; mit #include ist alles erledigt

Größere Sachen gehören aber in eine .cpp.

von Mario (Gast)


Lesenswert?

@Klaus,

danke für die Info. Wie greife ich denn von der *.cpp Datei auf die 
Steuerelemente zu? Immer wenn ich das versuche bekomme ich eine 
Fehlermeldung.

Gruß Mario

von Klaus W. (mfgkw)


Lesenswert?

?

Beispiel!

von Mario (Gast)


Lesenswert?

Im CPP File:
System::Void button1_Click(System::Object^  sender, System::EventArgs^ 
e)
{
  Form1::BackColor = Color::Green;
}

Fehler:
Test1.cpp(22) : error C2597: Ungültiger Verweis auf nicht-statischen 
Member 'System::Windows::Forms::Form::BackColor'

von ybringer (Gast)


Lesenswert?

> bekomme ich eine Fehlermeldung.

Ja, das Problem hatte ich auch mal. Genau das gleiche! Ich bekam auch 
eine Fehlermeldung! Dann fehlt dir ein Semikolon!

von Klaus W. (mfgkw)


Lesenswert?

oh Gott, das ist C++ mit .NET-Gedöns.
Damit kann ich nix anfangen, sorry.

von Klaus W. (mfgkw)


Lesenswert?

ybringer schrieb:
>> bekomme ich eine Fehlermeldung.
>
> Ja, das Problem hatte ich auch mal. Genau das gleiche! Ich bekam auch
> eine Fehlermeldung! Dann fehlt dir ein Semikolon!

Schon vom Laserschwert geblendet?

Oder bist du nicht der  ybriger aus 
Beitrag "Laser aus Drucker" ?

von Mario (Gast)


Lesenswert?

Und wo soll das Semicolon hin???

von MeinerEiner (Gast)


Lesenswert?

> Oder bist du nicht der  ybriger aus
> Beitrag "Laser aus Drucker" ?

Doch doch, das isser schon.

Nur ist ein fehlender ; nur eine von 382895 möglichen Fehlerquellen.
Aber ich vermute mal, dass die Zeile eher
 Form1.BackColor = Color::Green;
heissen müsste.

von Mario (Gast)


Lesenswert?

Punkt dazwischen habe ich glaub auch schon versucht. Da mekert der 
Compiler auch

von Karl H. (kbuchegg)


Lesenswert?

Mario schrieb:
> Punkt dazwischen habe ich glaub auch schon versucht. Da mekert der
> Compiler auch

Und was sagt er so?
Oder brabbelt der nur so vor sich hin.

Zeig doch mal die ganze Klasse.
Aus ein paar Ausschniten kann man des öfteren nur ganz wenig sagen.

von Arc N. (arc)


Lesenswert?

Mario schrieb:
> Im CPP File:
> System::Void button1_Click(System::Object^  sender, System::EventArgs^
> e)
> {
>   Form1::BackColor = Color::Green;
> }
>
> Fehler:
> Test1.cpp(22) : error C2597: Ungültiger Verweis auf nicht-statischen
> Member 'System::Windows::Forms::Form::BackColor'

Im Header muss die Deklaration der Methode stehen
1
public ref class Form1 : public System::Windows::Forms::Form
2
...
3
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e);
4
5
// Im Cpp dann die Implementation
6
System::Void Form1::button1_Click(System::Object^  sender, System::EventArgs^  e) {
7
    BackColor = Color::Green;
8
}

von Mario (Gast)


Lesenswert?

@Arc Net,

vielen Dnak für die Info.

Das Form1:: vor button1_Click im CPP File hat gefehlt.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.