www.mikrocontroller.net

Forum: PC-Programmierung Visual Studion Code im Header?


Autor: Mario (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Mario (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
?

Beispiel!

Autor: Mario (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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'

Autor: ybringer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Klaus Wachtler (mfgkw)
Datum:

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

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht 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" ?

Autor: Mario (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und wo soll das Semicolon hin???

Autor: MeinerEiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Mario (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Punkt dazwischen habe ich glaub auch schon versucht. Da mekert der 
Compiler auch

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Arc Net (arc)
Datum:

Bewertung
0 lesenswert
nicht 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
public ref class Form1 : public System::Windows::Forms::Form
...
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e);

// Im Cpp dann die Implementation
System::Void Form1::button1_Click(System::Object^  sender, System::EventArgs^  e) {
    BackColor = Color::Green;
}

Autor: Mario (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Arc Net,

vielen Dnak für die Info.

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.