Zum Inhalt springen

<<valle>>

Mitglieder
  • Gesamte Inhalte

    40
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von <<valle>>

  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
  14. Danke erst mal für die schnellen Antworten. Das mit der List ist ein guter Tipp, guck mir das mal genauer an... Danke
  15. Hallo alle zusammen, ich hab folgende Frage: Wie kann ich einzelne Elemente aus einem Array löschen bzw. neu erzeugen? Mein konkretes Problem sieht so aus: Meine Klasse: public ref class Firma { public: String^ Name; String^ Straße; String^ Nr; String^ PLZ; String^ Ort; array<String^> ^Ansprechpartner; array<String^, 2>^Stellplatz; //Stellplatz[i,0]=Ort Stellplatz[i,1]=Inventnr }; Von der Klasse habe ich einen Instanzenarray array<Firma^>^Firmen; Firmen=gcnew array<Firma^>(anzahl); Gibt es nun eine Möglichkeit dem Firmen Array ein weiteres Element zu erweitern oder ein Element zu löschen? Vielen Dank schon mal im Vorraus! Lg Valentin
  16. Die Sache hat sich erledigt die Lösung ist wie folgt: public ref class Form1 : public System::Windows::Forms::Form { void encryptText() { Decimal a=Schlüssel1->Value;Decimal b=Schlüssel2->Value;Decimal c=Schlüssel5->Value; ... private: System::Void Textver_Click(System::Object^ sender, System::EventArgs^ e) { ThreadStart^ ThreadDelegate= gcnew ThreadStart(this , &Crypt::Form1::encryptText); Thread^Threadencrypt=gcnew Thread(ThreadDelegate); Threadencrypt->Start();
  17. Hallo alle zusammen, ich habe folgendes Problem: ich möchte einen Thread starten um etwas zu verschlüsseln das mache ich so: public ref class Form1 : public System::Windows::Forms::Form { void encryptText(Decimal a,Decimal b, Decimal c) ... private: System::Void Textver_Click(System::Object^ sender, System::EventArgs^ e) { ThreadStart^ hthreadencrypt= gcnew ThreadStart(this ,&Crypt::Form1::encryptText(Schlüssel1->Value,Schlüssel2->Value,Schlüssel5->Value)); Thread^Threadencrypt=gcnew Thread(hthreadencrypt); Threadencrypt->Start(); } Dazu gibt er mir folgenden Fehler: error C2102: '&' erwartet L-Wert error C3350: "System::Threading::ThreadStart": Ein Delegatkonstruktor erwartet 2 Argument(e). Vielen Dank schon mal für die Antworten lg valentin
  18. Hey, ich kann dir folgendes Buch empfehlen: 3D-Spiele-Programmierung mit DirectX 9 und c++ In dem Buch ist beschrieben wie man von einem Konzept bis zum fertigen Spiel kommt. Eine eigene Engine ist auf einer DVD sowie alle cpps und Projekte. Lg valentin
  19. Ja du hast ja recht. Hab das ganze jetzt ein wenig um gemodelt. Jetzt schreibt es auf einen Unterordner wie in der Intallation angegeben und dazu braucht es auch keine Adminrechte. Hab das requireAdministrator wieder raus genommen und jetzt gibts auch keine Probleme mehr. Manche Funktionen gehen jetzt leider nicht wie ich mir das vorgestellt hatte aber um das richtig zu machen muss ich mir glaub ich erst noch hintergrundwissen zu dem ganzen AccessControl undsw. aneignen... vielen Dank für die Hilfe lg valentin
  20. ja wär trotzdem nett wenn du mir das noch schreiben könntest
  21. Danke klappt hab jetzt als UAC-Ausführungsebene requireAdministrator ausgewählt und jetzt läufts. thx
  22. Hey, mein Programm braucht Administratorrechte, da es z.b auf C:\ schreibt... leider verweigert Vista jetzt den zugriff... wenn ich das Programm als admin ausführe ist alles ok aber wie bekomm ich es hin, dass das Programm von alleine als admin gestartet wird? lg valentin
  23. Hier noch ein bisschen code aus meinem Programm, villt macht es das einfacher: So erstelle ich den Subkey mit dem Wert pfad: String^str=Microsoft::Win32::Registry::GetValue("HKEY_CURRENT_USER\\ Software\\GeburtstagsProgramm","Path",value)->ToString()+"Weihnachtsprogramm2009-Geburtstag.exe"; Microsoft::Win32::Registry::CurrentUser->CreateSubKey("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run\\GeburtstagsProgramm"); Microsoft::Win32::Registry::SetValue("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run\\GeburtstagsProgramm","pfad",str); So versuche ich ihn wieder zu löschen: Microsoft::Win32::Registry::CurrentUser->DeleteSubKey("HKEY_CURRENT_USER \\Software\\Microsoft\\Windows\\CurrentVersion\\Run\\GeburtstagsProgramm"); lg valentin

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