Zum Inhalt springen

<<valle>>

Mitglieder
  • Gesamte Inhalte

    40
  • Benutzer seit

  • Letzter Besuch

  1. Okay ich glaub jetzt hab ichs verstanden. Danke!
  2. Okay das heißt ich brauche zwangsweise ein default-Konstruktor in Basis? Oder muss ich einen in dem Konstruktor von Abgeleitet aufrufen? Anders gefragt:Was muss ich an den Klassen ändern, damit das Objekt "Abgeleitet obj" die Eigenschaften: wert=1 und neuerwert=1 besitzt, nachdem ich es so erzeugt wurde: Abgeleitet obj(1)?
  3. Hallo, ich hab mal eine Verständnisfrage und zwar: Ich hab eine Basisklasse Basis: class Basis { public: int wert; Basis(int x) { wert=x; } }; Ich hab eine abgeleitete Klasse Abgeleitet class Abgeleitet : public Basis { public: int neuerwert; Abgeleitet(int x) { neuerwert=x; } } Wenn ich jetzt eine Instanz von Abgeleitet erstellen würde, müsste es einen Fehler geben. Das dürfte ja auch nicht funktionieren, da das Programm gar nicht weiß mit welchem Wert er Basis::wert initialisieren soll. Frage: Wie mach ich, dass es das weiß? Danke schonmal im voraus. Lg
  4. Hallo allerseits, ich hab mal ne Frage und zwar: Habe ich einen Thread dem ich einen Parameter übergebe: Datei:Klassen.h using namespace System; using namespace System::Collections::Generic; using namespace System::Threading; #pragma once public ref class client { public: Int32 id; Int32 loc_x; Int32 loc_y; bool used; List<String^>^ commands; client(Int32 index); }; public ref class request { public: Int32 dest_x; Int32 dest_y; Int32 start_x; Int32 start_y; Int32 client_index; request(Int32 s_x, Int32 s_y, Int32 d_x, Int32 d_y); }; public ref class server { public: Int32 clientamount; bool btmr; List<client^>^clients; List<request^>^requests; ThreadStart^ThreadDelegateTmr; ParameterizedThreadStart^ThreadDelegateThr;// <------------Um diesen Thread geht es List<Thread^>^Thr; Thread^Tmr; server(); void start(); void stop(); void get_best_client(request^r); void manage_requests(); void handle_request(Object^o); void calculate_route(request^r); }; #pragma endregion Hier noch die passende server.cpp using namespace System; using namespace System::Collections::Generic; #include "stdafx.h" #include "Klassen.h" server::server() { clientamount=2; requests=gcnew List<request^>(0); clients=gcnew List<client^>(clientamount); for(int loop=0;loop<2;++loop) { clients->Add(gcnew client(loop)); } btmr=false; ThreadDelegateTmr=gcnew ThreadStart(this, &server::manage_requests); ThreadDelegateThr=gcnew ParameterizedThreadStart(this, &server::handle_request);//<---Hier ist mein Thread Thr=gcnew List<Thread^>(0); } void server::start() { // Thread manage_requests starten btmr=true; Tmr=gcnew Thread(ThreadDelegateTmr); Tmr->Start(); } void server::stop() { // Thread manage_requests stoppen btmr=false; Tmr->Join(); } void server::calculate_route(request^r) { } void server::get_best_client(request^r) { int id=0; r->client_index=id; } //********************************** void server::handle_request(Object^o) { request^r=o;//<------------------------------Hier ist das Problem //Nächsten Client finden //server::get_best_client(o); //Route berechnen //server::calculate_route(o); } void server::manage_requests() { bool free =false; while(btmr) { //Mindestens ein Request if(requests->Count>0) { //Ist ein Client frei ? for(Int32 loop=0;loop<clientamount;++loop) { if(!clients[loop]->used) { free=true; loop=clientamount; } } //Es ist einer frei if(free) { Thr->Add(gcnew Thread(ThreadDelegateThr)); Thr[Thr->Count-1]->Start(requests[0]);//<----Hier übergebe ich ihm den Parameter vom Typ request //server::handle_request(requests[0]); } } Thread::Sleep(100); } } Dieser Parameter darf aber nur vom Typ Object sein. Das Problem taucht in der server::handle_request(Object^o) auf. Wie kann ich in dieser Funktion aus dem Object wieder ein request machen? Ich hoffe ich habe alle relevanten Dinge gesagt. Vielen Dank für die Antworten Lg
  5. Oh da liegt der Fehler! Wenn ich: Bruecke.x=1 in die main Funktion schreibe funktioniert es. Ich wusste nicht, dass das so sein muss.Ich dachte man könnte das auch außerhalb machen... Danke!
  6. Hier der vollständige Anfang des Codes: #include <iostream> #include <string> #include <fstream> #include "Windows.h" #include "Funktionen.h" #define breite 50 #define hohe 30 #define hudbreite 20 class Spieler { public: int x; int y; char figur; int leben; Spieler() { x=0; y=hohe/2; figur='X'; leben=3; } void reset() { x=0; y=hohe/2; leben=3; } }; class HUD { public: std::string status; std::string ziel; std::string level; HUD() { status=""; ziel=""; level=""; } }; class Level { public: int objectanzahl; int axtschläge; //int levelMap[breite][hohe]; Obj *object; ~Level() { delete object; } }; class inventar { public: int gold; int holz; int brücken; inventar() { gold=0; holz=0; brücken=0; } void reset() { gold=0; holz=0; brücken=0; } }; class Obj { public: std::string typ; char figur; int x; int y; }; class item : public Obj { public: int kosten; bool visible; }; //Globale Variabeln int MenuEingabe=-1; char map [breite][hohe]; char hud [hudbreite][hohe]; Spieler S; HUD H; Level *lvl = new Level[6]; inventar invent; item Bruecke; //Bruecke.x=1;
  7. Also ich hab jetzt das 'using namespace std;' raus genommen. Den Konstruktor entfernt. keine Umlaute verwendet. bool statt BOOL. Es sieht jetzt wie folgt aus: Klasse Obj class Obj { public: std::string typ; char figur; int x; int y; }; Klasse item: class item : public Obj { public: int kosten; bool visible; }; Soo jetzt dürfte nichts mehr passieren Die Instanz: item Bruecke; Wenn man das so kompiliert kommt kein Fehler. Füge ich diese Zeile hinzu: Bruecke.x=1; kommt der Fehler error C2143: Syntaxfehler: Es fehlt ';' vor '.' error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. error C2371: 'Bruecke': Neudefinition; unterschiedliche Basistypen Siehe Deklaration von 'Bruecke'
  8. bin dabei. hatte den post getippt während du geantwortet hattest.
  9. Danke, aber das funktioniert leider auch nicht... ich habs so gemacht: Die Klasse: class item : public Obj { private: int kosten; BOOL visible; public: item(int k, BOOL v,char f) : Obj() { kosten=k; visible=v; x=-1; y=-1; figur=f; typ="item"; } void setkosten(int k) { kosten=k; } }; Und so wie du sagst: item Bruecke(3,false,'='); Bruecke.setkosten(3); hat als Ergebnis den selben Fehler: error C2143: Syntaxfehler: Es fehlt ';' vor '.' error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. error C2371: 'Bruecke': Neudefinition; unterschiedliche Basistypen Siehe Deklaration von 'Bruecke' Ich weiß echt nicht weiter. Ich habs nochmal im Kompendium C/C++ von Dirk Louis nachgeguckt. Da stehts so wie ichs im ersten Post hatte: class item variable; variable.x=1; Hat jemand noch ne Idee? Danke lg
  10. Hey danke für die Antwort. Das was du mir rätst hab ich auch schon ausprobiert: item Bruecke(3,false,'='); Bruecke.x=1; liefert den selben Fehler. Ich habs auch schon mit nem pointer versucht... item *Bruecke=new item(3,false,'='); Bruecke.x=1; Bringt leider alles nichts. Es gibt keinen Fehler wenn ich die ZeileBruecke.x=1; weg lasse. also nur: item Bruecke(3,false,'='); bzw. item *Bruecke=new item(3,false,'='); Dann funktioniert es, aber warum kann ich auf die Elemente nicht zugreifen? Wär dankbar für weitere Ideen. Lg
  11. Hallo liebe Fachinformatiker, ich bin gerade dabei ein kleines Spiel zu programmieren und dabei stoße ich auf einen Fehler, den ich nicht verstehe. Villt könnt ihr mir ja weiter helfen. Ich habe zwei Klassen: class Obj { public: string typ; char figur; int x; int y; Obj() { x=-1; y=-1; typ=""; figur=' '; } }; und eine zweite Klasse: class item : public Obj { public: int kosten; BOOL visible; item(int k, BOOL v) : Obj() { kosten=k; visible=v; } }; Soweit so gut. Jetzt bilde ich eine Instanz der Klasse item. class item Brücke(3,false); Alles kein Problem aber wenn ich jetzt auf die Elemente zugreifen möchte: Brücke.x=1; Gibt mir mein Kompiler (Visual Studio 2008 Express) folgenden Fehler: error C2143: Syntaxfehler: Es fehlt ';' vor '.' error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. error C2371: 'Brücke': Neudefinition; unterschiedliche Basistypen Kann mir jemand weiter helfen? Vielen Dank im voraus! Lg
  12. N'abend, kann man die Elemente einer Listbox in der Listbox editieren? Halb. Hier zeigt einer wie es geht, aber geht das nicht einfacher? Wär dankbar wenn jemand ne bessere Lösung posten würde. Lg valentin
  13. Hey, ich würde gerne die Cpu ID mit Hilfe von c++.Net auslesen. Hab bisher leider nur komplizierte Methoden gefunden, die ich nicht wirklich verstehe. Kann mir jemand weiter helfen? lg valle

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...