<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[OOP Problem]]></title><description><![CDATA[<p>Hi</p>
<p>ich progge zurzeit an einem kleinen spiel, das problem hat aber nur mit vererbung zutun^^.</p>
<p>ich habe eine object klasse:</p>
<pre><code class="language-cpp">#include &quot;DDraw.h&quot;

class Object
{
      protected:
              int Koordinaten[2];
              int Hight;
              int Width;
              LPDIRECTDRAWSURFACE7	lpddsBitmap;
              RECT					rectbitmap; 
              DDraw                 DDraw_I;

      public:
              void set_Koordinaten(int, int);
              void Draw_Object();
              void LoadBitmap(char*);
              void Set_Width_Hight(int, int);
};
</code></pre>
<p>die hat eien funktion loadbitmap:</p>
<pre><code class="language-cpp">void Object::LoadBitmap(char* path)//LoadBitmap(char path, RECT BitmapRect)
{
     lpddsBitmap = DDLoadBitmap(lpDirectDraw, path, Width, Hight);
}
</code></pre>
<p>so. wenn cih dann die funktion aufrufe geht alles super und funztz.</p>
<p>jetz vererbt object aber seien member und methoden an die klasse player:</p>
<pre><code class="language-cpp">class Player : public Object
{
      private:
      int Hitpoints; 

      public:
      void Move(char*);
};
</code></pre>
<p>;</p>
<p>wennn jetzt für eine instanz der klasse player die funktion loadbitmap aufrufe, stürzt mein prog mit fehlerberichterstattungsassitenten ab. habt ihr da ne idee?</p>
<p>MfG</p>
<p>Eldarion</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/164759/oop-problem</link><generator>RSS for Node</generator><lastBuildDate>Mon, 14 Sep 2026 02:57:02 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/164759.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 12 Nov 2006 13:46:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to OOP Problem on Sun, 12 Nov 2006 14:17:08 GMT]]></title><description><![CDATA[<p>Hi</p>
<p>ich progge zurzeit an einem kleinen spiel, das problem hat aber nur mit vererbung zutun^^.</p>
<p>ich habe eine object klasse:</p>
<pre><code class="language-cpp">#include &quot;DDraw.h&quot;

class Object
{
      protected:
              int Koordinaten[2];
              int Hight;
              int Width;
              LPDIRECTDRAWSURFACE7	lpddsBitmap;
              RECT					rectbitmap; 
              DDraw                 DDraw_I;

      public:
              void set_Koordinaten(int, int);
              void Draw_Object();
              void LoadBitmap(char*);
              void Set_Width_Hight(int, int);
};
</code></pre>
<p>die hat eien funktion loadbitmap:</p>
<pre><code class="language-cpp">void Object::LoadBitmap(char* path)//LoadBitmap(char path, RECT BitmapRect)
{
     lpddsBitmap = DDLoadBitmap(lpDirectDraw, path, Width, Hight);
}
</code></pre>
<p>so. wenn cih dann die funktion aufrufe geht alles super und funztz.</p>
<p>jetz vererbt object aber seien member und methoden an die klasse player:</p>
<pre><code class="language-cpp">class Player : public Object
{
      private:
      int Hitpoints; 

      public:
      void Move(char*);
};
</code></pre>
<p>;</p>
<p>wennn jetzt für eine instanz der klasse player die funktion loadbitmap aufrufe, stürzt mein prog mit fehlerberichterstattungsassitenten ab. habt ihr da ne idee?</p>
<p>MfG</p>
<p>Eldarion</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1173000</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1173000</guid><dc:creator><![CDATA[Eldarion]]></dc:creator><pubDate>Sun, 12 Nov 2006 14:17:08 GMT</pubDate></item><item><title><![CDATA[Reply to OOP Problem on Sun, 12 Nov 2006 14:08:17 GMT]]></title><description><![CDATA[<p>Abgesehen davon, daß der Klasse Object der virtuelle Destruktor fehlt, und daß char * nun wirklich ein ganz und gar ungeeigneter Typ zum Umgang mit Strings ist, sehe ich erst mal keinen Fehler. Vermutlich liegt das Problem irgendwo anders (mehr Code zeigen könnte helfen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1173013</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1173013</guid><dc:creator><![CDATA[Z2]]></dc:creator><pubDate>Sun, 12 Nov 2006 14:08:17 GMT</pubDate></item><item><title><![CDATA[Reply to OOP Problem on Sun, 12 Nov 2006 14:23:18 GMT]]></title><description><![CDATA[<p>ich dchte, wenn ich keinen destruktor festlege, baut den der compiler automatisch oder? :???:</p>
<p>was würdet ihr denn empfhelen um mit strings umzugehen?</p>
<p>die klasse string aus der &lt;string.h&gt; ?</p>
<p>naja, dann hier nochmal mehr code:</p>
<pre><code class="language-cpp">//Hauptklasse
#include &quot;DDraw.h&quot;
#include &quot;Player.h&quot;
class Game
{
      private:
              DDraw Game_DDraw;
              //KI    Game_KI;
              //Input Game_Input;  
              Player MainPlayer;
              Object Test;        
      public:
             bool Init_All();
             void Release_All();
             void Render();
             void Clear_Scren();
             void Blit_Bitmap(RECT, LPDIRECTDRAWSURFACE7);
             DDraw getDirectDrawInstance ();
             void Move_Player(char*);        
};
</code></pre>
<p>das ist meine main klasse.</p>
<p>wenn ich jetz in Init_All()</p>
<p>folgendes mache:</p>
<pre><code class="language-cpp">bool Game::Init_All()
{
     if(Game_DDraw.ddInit(hwnd)==FALSE)
     {
          MessageBox(NULL, &quot;Fehler beim Initalsieren von DDraw&quot;, &quot;&quot;, MB_OK);
          return false;
     }

     MainPlayer.Set_Width_Hight(40, 30);
     MainPlayer.set_Koordinaten(300, 400);
     MainPlayer.LoadBitmap(&quot;Player.bmp&quot;);
     return true;
</code></pre>
<p>dann stürzt das programm wie gesagt ab.</p>
<p>wenn ich aber:</p>
<pre><code class="language-cpp">bool Game::Init_All()
{
     if(Game_DDraw.ddInit(hwnd)==FALSE)
     {
          MessageBox(NULL, &quot;Fehler beim Initalsieren von DDraw&quot;, &quot;&quot;, MB_OK);
          return false;
     }

     Test.Set_Width_Hight(40, 30);
     Test.set_Koordinaten(300, 400);
     Test.LoadBitmap(&quot;Player.bmp&quot;);
     return true;          
}
</code></pre>
<p>mache, dann läuft alles und das bitmap wird geladen. also wen cih die parent klasse benutez funztes bei der child net.</p>
<p>schonma danke im vorraus</p>
<p>mfg<br />
eldarion</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1173020</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1173020</guid><dc:creator><![CDATA[Eldarion]]></dc:creator><pubDate>Sun, 12 Nov 2006 14:23:18 GMT</pubDate></item><item><title><![CDATA[Reply to OOP Problem on Sun, 12 Nov 2006 14:25:44 GMT]]></title><description><![CDATA[<p>In &lt;string.h&gt; gibt es keine Klassen. Das ist ein veralterter C Header. Was du meinst, ist wohlmöglich die Klasse std::string aus &lt;string&gt; und ja, die ist geeignet.</p>
<p>Wenn du selbst keinen Destruktor schreibst, wird einer angelegt. Der ist aber nicht virtuell. Und wenn du von einer Klasse (public) ableitest, brauchst du in der Regel einen virtuellen Destruktor.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1173022</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1173022</guid><dc:creator><![CDATA[Z2]]></dc:creator><pubDate>Sun, 12 Nov 2006 14:25:44 GMT</pubDate></item><item><title><![CDATA[Reply to OOP Problem on Sun, 12 Nov 2006 15:48:10 GMT]]></title><description><![CDATA[<p>k, dann nehm ich std::string^^.</p>
<p>ich komm mit den beiden headern immer durcheinandern^^.</p>
<p>ok, ich check ma das mit dem virtuellen destruktor.</p>
<p>edit: hat tatsöchlich daran gelegen, das der destruktor net virtuel war. danke,ihr seid super <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>edit2: öhm, das mit char* muss schon manchmal sein, weil viele directx sachen erwarten char* und net string. sonst müsste man wieder konvertiern</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1173035</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1173035</guid><dc:creator><![CDATA[Eldarion]]></dc:creator><pubDate>Sun, 12 Nov 2006 15:48:10 GMT</pubDate></item><item><title><![CDATA[Reply to OOP Problem on Sun, 12 Nov 2006 17:42:02 GMT]]></title><description><![CDATA[<p>Eldarion schrieb:</p>
<blockquote>
<p>...das mit char* muss schon manchmal sein, weil viele directx sachen erwarten char* und net string. sonst müsste man wieder konvertiern</p>
</blockquote>
<p>Stimmt schon; manchmal muß es sein.<br />
Aber oftmals lohnt sich die string-Verwendung (mit gelegentlichen Transformationen - die sind aber selten wirklich ein Performanceproblem) dennoch, weil man dadurch unheimlich an Übersichtlichkeit gewinnt bei allem, was wirklich stringbehandlung ist.</p>
<p>Kleine Frage: kennst Du string::c_str() ?<br />
Damit kann man immer kurz vor einem APIaufruf einen entsprechenden (char const*) bekommen...</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1173159</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1173159</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Sun, 12 Nov 2006 17:42:02 GMT</pubDate></item></channel></rss>