<?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[Hilfe Prob bei nem Prog]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe ein Problem in meinem Prog &quot;UBoot Jagd&quot;:</p>
<p>Wenn ich es starte stürtzt es nach dem Aufruf der Funktion &quot;Reagiere()&quot; eines Enemy Objektes ab.<br />
Mein Borland kompiler zeigt keine fehler an, jedoch der minimalist GNU für Windows nicht:</p>
<pre><code>&quot;WasserBombe.cpp&quot;: C:/***/UBoot Jagd/WasserBombe.cpp multiple definition of `WasserBombe::GetXKoord() const' in Zeile 24
windows\Debug_Build\data.obj:C:/***/UBoot Jagd/WasserBombe.cpp first defined here
windows\Debug_Build\StatePlayerUnknown.obj: In function `ZNK11WasserBombe9GetYKoordEv':
</code></pre>
<p>Das sagt er bei ALLEN Funktionen meiner Klassen. Ich habe das State Pattern Desing verwendet.</p>
<p>Hier mein Prog:</p>
<p>data.cpp:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &quot;defs.h&quot;
#include &quot;UBoot.h&quot;
#include &quot;Enemy.h&quot;
using namespace std;

int main()
{
  Enemy test;
  string input;

  while(input != &quot;exit&quot;)
  {
    cout &lt;&lt; &quot;anfang der schleife&quot; &lt;&lt; endl;
    test.Reagiere();         // Hier Absturtz
  }
  return 0;
}
</code></pre>
<p>defs.h:</p>
<pre><code class="language-cpp">#ifndef DEFS_H
#define DEFS_H

#define NORDEN    0
#define WESTEN    1
#define OSTEN     2
#define SUEDEN    3
#define UNBEKANNT 4
#define GEFUNDEN  5

#endif
</code></pre>
<p>Koord.h:</p>
<pre><code class="language-cpp">#ifndef KOORD_H
#define KOORD_H

class Koord                                         // Klasse Koord um den
{                                                   // standort eines Objekts
  public:                                           // zu speichern.
  Koord();
  virtual ~Koord();

  virtual int GetX() const;
  virtual int GetY() const;
  virtual void SetX(int);
  virtual void SetY(int);
  virtual void SetAll(int, int);

  private:
  int itsX;
  int itsY;
};

#include &quot;Koord.cpp&quot;

#endif
</code></pre>
<p>Koord.cpp:</p>
<pre><code class="language-cpp">#ifndef KOORD_CPP
#define KOORD_CPP

#include &quot;Koord.h&quot;

Koord::Koord()
{
  itsX = 0;
  itsY = 0;
}

Koord::~Koord()
{}

int Koord::GetX() const
{
  return itsX;
}

int Koord::GetY() const
{
  return itsY;
}

void Koord::SetX(int x)
{
  itsX = x;
}

void Koord::SetY(int y)
{
  itsY = y;
}

void Koord::SetAll(int x, int y)
{
  itsX = x;
  itsY = y;
}

#endif
</code></pre>
<p>WasserBombe.h:</p>
<pre><code class="language-cpp">#ifndef WASSER_BOMBE_H
#define WASSER_BOMBE_H

#include &quot;Koord.h&quot;

class WasserBombe
{
  public:
  WasserBombe();
  virtual ~WasserBombe();

  virtual void SetXKoord(int);
  virtual void SetYKoord(int);
  virtual int GetXKoord() const;
  virtual int GetYKoord() const;

  private:
  Koord itsKoord;
};

#include &quot;WasserBombe.cpp&quot;

#endif
</code></pre>
<p>WasserBombe.cpp:</p>
<pre><code class="language-cpp">#ifndef WASSER_BOMBE_CPP
#define WASSER_BOMBE_CPP

#include &quot;Koord.h&quot;
#include &quot;WasserBombe.h&quot;

WasserBombe::WasserBombe()
{}

WasserBombe::~WasserBombe()
{}

void WasserBombe::SetXKoord(int x)
{
  itsKoord.SetX(x);
}

void WasserBombe::SetYKoord(int y)
{
  itsKoord.SetY(y);
}

int WasserBombe::GetXKoord() const
{
  return itsKoord.GetX();
}

int WasserBombe::GetYKoord() const
{
  return itsKoord.GetY();
}

#endif
</code></pre>
<p>Torpedo.h:</p>
<pre><code class="language-cpp">#ifndef TORPEDO_H
#define TORPEDO_H

#include &quot;Koord.h&quot;

class Torpedo                                   // Klasse Torpedo
{
  public:
  Torpedo();
  virtual ~Torpedo();

  virtual int GetRichtung() const;
  virtual int GetXKoord() const;
  virtual int GetYKoord() const;
  virtual int GetZielX() const;
  virtual int GetZielY() const;
  virtual void SetZiel(int, int);
  virtual void SetKoord(int, int);
  virtual void SetRichtung(int);

  virtual void Move();

  private:
  int itsRichtung;
  Koord itsKoord;
  Koord itsZiel;
};

#include &quot;Torpedo.cpp&quot;

#endif
</code></pre>
<p>Torpedo.cpp:</p>
<pre><code class="language-cpp">#ifndef TORPEDO_CPP
#define TORPEDO_CPP

#include &quot;defs.h&quot;
#include &quot;Koord.h&quot;
#include &quot;Torpedo.h&quot;

Torpedo::Torpedo()
{}

Torpedo::~Torpedo()
{}

int Torpedo::GetRichtung() const
{
  return itsRichtung;
}

int Torpedo::GetXKoord() const
{
  return itsKoord.GetX();
}

int Torpedo::GetYKoord() const
{
  return itsKoord.GetY();
}

int Torpedo::GetZielX() const
{
  return itsZiel.GetX();
}

int Torpedo::GetZielY() const
{
  return itsZiel.GetY();
}

void Torpedo::SetZiel(int x, int y)
{
  itsZiel.SetX(x);
  itsZiel.SetY(y);
}

void Torpedo::SetKoord(int x, int y)
{
  itsKoord.SetX(x);
  itsKoord.SetY(y);
}

void Torpedo::SetRichtung(int richtung)
{
  itsRichtung = richtung;
}

void Torpedo::Move()
{
  int x = itsKoord.GetX();
  int y = itsKoord.GetY();
  switch(itsRichtung)
  {
    case NORDEN:
         itsKoord.SetY(y+1);

    case SUEDEN:
         itsKoord.SetY(y+1);

    case WESTEN:
         itsKoord.SetX(x-1);

    case OSTEN:
         itsKoord.SetX(x+1);
  }
}

#endif
</code></pre>
<p>State.h:</p>
<pre><code class="language-cpp">#ifndef STATE_H
#define STATE_H

class Enemy;

class State
{
  public:
  virtual ~State(){}
  virtual void Execute(Enemy*) = 0;
};

#endif
</code></pre>
<p>StatePlayerNorth.h:</p>
<pre><code class="language-cpp">#ifndef STATE_PLAYER_NORTH_H
#define STATE_PLAYER_NORTH_H

#include &quot;Enemy.h&quot;
#include &quot;State.h&quot;

class State_PlayerNorth : public State
{
  public:
  State_PlayerNorth(){}
  virtual void Execute(Enemy*);
};

#include &quot;StatePlayerNorth.cpp&quot;

#endif
</code></pre>
<p>StatePlayerNorth.cpp:</p>
<pre><code class="language-cpp">#ifndef STATE_PLAYER_NORTH_CPP
#define STATE_PLAYER_NORTH_CPP

#include &quot;Enemy.h&quot;
#include &quot;defs.h&quot;
#include &quot;StatePlayerNorth.h&quot;
#include &quot;StatePlayerWest.h&quot;
#include &quot;StatePlayerEast.h&quot;
#include &quot;StatePlayerSouth.h&quot;
#include &quot;StatePlayerGot.h&quot;
#include &quot;StatePlayerUnknown.h&quot;

void State_PlayerNorth::Execute(Enemy * someEnemy)
{
  switch(someEnemy-&gt;GetPlayer())
  {
    case NORDEN:
    {
      someEnemy-&gt;SetRichtung(NORDEN);
      someEnemy-&gt;Move(1);
    }
    case WESTEN:
    {
      someEnemy-&gt;ChangeState(new State_PlayerWest);
      someEnemy-&gt;Reagiere();
    }
    case OSTEN:
    {
      someEnemy-&gt;ChangeState(new State_PlayerEast);
      someEnemy-&gt;Reagiere();
    }
    case SUEDEN:
    {
      someEnemy-&gt;ChangeState(new State_PlayerSouth);
      someEnemy-&gt;Reagiere();
    }
    case UNBEKANNT:
    {
      someEnemy-&gt;ChangeState(new State_PlayerUnknown);
    }
    case GEFUNDEN:
    {
      someEnemy-&gt;ChangeState(new State_PlayerGot);
    }
  } 
}

#endif
</code></pre>
<p>StatePlayerEast.h:</p>
<pre><code class="language-cpp">#ifndef STATE_PLAYER_EAST_H
#define STATE_PLAYER_EAST_H

#include &quot;Enemy.h&quot;
#include &quot;State.h&quot;

class State_PlayerEast : public State
{
  public:
  State_PlayerEast(){}
  virtual void Execute(Enemy*);
};

#include &quot;StatePlayerEast.cpp&quot;

#endif
</code></pre>
<p>StatePlayerEast.cpp:</p>
<pre><code class="language-cpp">#ifndef STATE_PLAYER_EAST_CPP
#define STATE_PLAYER_EAST_CPP

#include &quot;Enemy.h&quot;
#include &quot;defs.h&quot;
#include &quot;StatePlayerNorth.h&quot;
#include &quot;StatePlayerWest.h&quot;
#include &quot;StatePlayerEast.h&quot;
#include &quot;StatePlayerSouth.h&quot;
#include &quot;StatePlayerGot.h&quot;
#include &quot;StatePlayerUnknown.h&quot;

void State_PlayerEast::Execute(Enemy * someEnemy)
{
  switch(someEnemy-&gt;GetPlayer())
  {
    case NORDEN:
    {
      someEnemy-&gt;ChangeState(new State_PlayerNorth);
      someEnemy-&gt;Reagiere();
    }
    case WESTEN:
    {
      someEnemy-&gt;ChangeState(new State_PlayerWest);
      someEnemy-&gt;Reagiere();
    }
    case OSTEN:
    {
      someEnemy-&gt;SetRichtung(OSTEN);
      someEnemy-&gt;Move(1);
    }
    case SUEDEN:
    {
      someEnemy-&gt;ChangeState(new State_PlayerSouth);
      someEnemy-&gt;Reagiere();
    }
    case UNBEKANNT:
    {
      someEnemy-&gt;ChangeState(new State_PlayerUnknown);
      someEnemy-&gt;Reagiere();
    }
    case GEFUNDEN:
    {
      someEnemy-&gt;ChangeState(new State_PlayerGot);
      someEnemy-&gt;Reagiere();
    }
  } 
}

#endif
</code></pre>
<p>StatePlayerWest.h:</p>
<pre><code class="language-cpp">#ifndef STATE_PLAYER_WEST_H
#define STATE_PLAYER_WEST_H

#include &quot;Enemy.h&quot;
#include &quot;State.h&quot;

class State_PlayerWest : public State
{
  public:
  State_PlayerWest(){}
  virtual void Execute(Enemy*);
};

#include &quot;StatePlayerWest.cpp&quot;

#endif
</code></pre>
<p>StatePlayerWest.cpp:</p>
<pre><code class="language-cpp">#ifndef STATE_PLAYER_WEST_CPP
#define STATE_PLAYER_WEST_CPP

#include &quot;Enemy.h&quot;
#include &quot;defs.h&quot;
#include &quot;StatePlayerNorth.h&quot;
#include &quot;StatePlayerWest.h&quot;
#include &quot;StatePlayerEast.h&quot;
#include &quot;StatePlayerSouth.h&quot;
#include &quot;StatePlayerGot.h&quot;
#include &quot;StatePlayerUnknown.h&quot;

void State_PlayerWest::Execute(Enemy * someEnemy)
{
  switch(someEnemy-&gt;GetPlayer())
  {
    case NORDEN:
    {
      someEnemy-&gt;ChangeState(new State_PlayerNorth);
      someEnemy-&gt;Reagiere();
    }
    case WESTEN:
    {
      someEnemy-&gt;SetRichtung(WESTEN);
      someEnemy-&gt;Move(1);
    }
    case OSTEN:
    {
      someEnemy-&gt;ChangeState(new State_PlayerEast);
      someEnemy-&gt;Reagiere();
    }
    case SUEDEN:
    {
      someEnemy-&gt;ChangeState(new State_PlayerSouth);
      someEnemy-&gt;Reagiere();
    }
    case UNBEKANNT:
    {
      someEnemy-&gt;ChangeState(new State_PlayerUnknown);
      someEnemy-&gt;Reagiere();
    }
    case GEFUNDEN:
    {
      someEnemy-&gt;ChangeState(new State_PlayerGot);
      someEnemy-&gt;Reagiere();
    }
  } 
}

#endif
</code></pre>
<p>StatePlayerSouth.h:</p>
<pre><code class="language-cpp">#ifndef STATE_PLAYER_SOUTH_H
#define STATE_PLAYER_SOUTH_H

#include &quot;Enemy.h&quot;
#include &quot;State.h&quot;

class State_PlayerSouth : public State
{
  public:
  State_PlayerSouth(){}
  virtual void Execute(Enemy*);
};

#include &quot;StatePlayerSouth.cpp&quot;

#endif
</code></pre>
<p>StatePlayerSouth.cpp:</p>
<pre><code class="language-cpp">#ifndef STATE_PLAYER_SOUTH_CPP
#define STATE_PLAYER_SOUTH_CPP

#include &quot;Enemy.h&quot;
#include &quot;defs.h&quot;
#include &quot;StatePlayerNorth.h&quot;
#include &quot;StatePlayerWest.h&quot;
#include &quot;StatePlayerEast.h&quot;
#include &quot;StatePlayerSouth.h&quot;
#include &quot;StatePlayerGot.h&quot;
#include &quot;StatePlayerUnknown.h&quot;

void State_PlayerSouth::Execute(Enemy * someEnemy)
{
  switch(someEnemy-&gt;GetPlayer())
  {
    case NORDEN:
    {
      someEnemy-&gt;ChangeState(new State_PlayerNorth);
      someEnemy-&gt;Reagiere();
    }
    case WESTEN:
    {
      someEnemy-&gt;ChangeState(new State_PlayerWest);
      someEnemy-&gt;Reagiere();
    }
    case OSTEN:
    {
      someEnemy-&gt;ChangeState(new State_PlayerEast);
      someEnemy-&gt;Reagiere();
    }
    case SUEDEN:
    {
      someEnemy-&gt;SetRichtung(SUEDEN);
      someEnemy-&gt;Move(1);
    }
    case UNBEKANNT:
    {
      someEnemy-&gt;ChangeState(new State_PlayerUnknown);
    }
    case GEFUNDEN:
    {
      someEnemy-&gt;ChangeState(new State_PlayerGot);
    }
  } 
}

#endif
</code></pre>
<p>StatePlayerGot.h:</p>
<pre><code class="language-cpp">#ifndef STATE_PLAYER_GOT_H
#define STATE_PLAYER_GOT_H

#include &quot;Enemy.h&quot;
#include &quot;State.h&quot;

class State_PlayerGot : public State
{
  public:
  State_PlayerGot(){}
  virtual void Execute(Enemy*);
};

#include &quot;StatePlayerGot.cpp&quot;

#endif
</code></pre>
<p>StatePlayerGot.cpp:</p>
<pre><code class="language-cpp">#ifndef STATE_PLAYER_GOT_CPP
#define STATE_PLAYER_GOT_CPP

#include &quot;Enemy.h&quot;
#include &quot;defs.h&quot;
#include &quot;StatePlayerNorth.h&quot;
#include &quot;StatePlayerWest.h&quot;
#include &quot;StatePlayerEast.h&quot;
#include &quot;StatePlayerSouth.h&quot;
#include &quot;StatePlayerGot.h&quot;
#include &quot;StatePlayerUnknown.h&quot;

void State_PlayerGot::Execute(Enemy * someEnemy)
{
  switch(someEnemy-&gt;GetPlayer())
  {
    case NORDEN:
    {
      someEnemy-&gt;ChangeState(new State_PlayerNorth);
      someEnemy-&gt;Reagiere();
    }
    case WESTEN:
    {
      someEnemy-&gt;ChangeState(new State_PlayerWest);
      someEnemy-&gt;Reagiere();
    }
    case OSTEN:
    {
      someEnemy-&gt;ChangeState(new State_PlayerEast);
      someEnemy-&gt;Reagiere();
    }
    case SUEDEN:
    {
      someEnemy-&gt;ChangeState(new State_PlayerSouth);
      someEnemy-&gt;Reagiere();
    }
    case UNBEKANNT:
    {
      someEnemy-&gt;ChangeState(new State_PlayerUnknown);
      someEnemy-&gt;Reagiere();
    }
    case GEFUNDEN:
    {
      //            Schießen und wegfahren
    }
  } 
}

#endif
</code></pre>
<p>StatePlayerUnknown.h:</p>
<pre><code class="language-cpp">#ifndef STATE_PLAYER_UNKNOWN_H
#define STATE_PLAYER_UNKNOWN_H

#include &quot;Enemy.h&quot;
#include &quot;State.h&quot;

class State_PlayerUnknown : public State
{
  public:
  State_PlayerUnknown(){}
  virtual void Execute(Enemy*);
};

#include &quot;StatePlayerUnknown.cpp&quot;

#endif
</code></pre>
<p>StatePlayerUnknown.cpp:</p>
<pre><code class="language-cpp">#ifndef STATE_PLAYER_UNKNOWN_CPP
#define STATE_PLAYER_UNKNOWN_CPP

#include &quot;Enemy.h&quot;
#include &quot;defs.h&quot;
#include &quot;StatePlayerNorth.h&quot;
#include &quot;StatePlayerWest.h&quot;
#include &quot;StatePlayerEast.h&quot;
#include &quot;StatePlayerSouth.h&quot;
#include &quot;StatePlayerGot.h&quot;
#include &quot;StatePlayerUnknown.h&quot;

void State_PlayerUnknown::Execute(Enemy * someEnemy)
{
  switch(someEnemy-&gt;GetPlayer())
  {
    case NORDEN:
    {
      someEnemy-&gt;ChangeState(new State_PlayerNorth);
      someEnemy-&gt;Reagiere();
    }
    case WESTEN:
    {
      someEnemy-&gt;ChangeState(new State_PlayerWest);
      someEnemy-&gt;Reagiere();
    }
    case OSTEN:
    {
      someEnemy-&gt;ChangeState(new State_PlayerEast);
      someEnemy-&gt;Reagiere();
    }
    case SUEDEN:
    {
      someEnemy-&gt;ChangeState(new State_PlayerSouth);
      someEnemy-&gt;Reagiere();
    }
    case UNBEKANNT:
    {
      someEnemy-&gt;SearchPlayer();
    }
    case GEFUNDEN:
    {
      someEnemy-&gt;ChangeState(new State_PlayerGot);
      someEnemy-&gt;Reagiere();
    }
  } 
}

#endif
</code></pre>
<p>ship.h:</p>
<pre><code class="language-cpp">#ifndef SHIP_H
#define SHIP_H

#include &quot;Koord.h&quot;
#include &quot;Torpedo.h&quot;

class ship                                    // Klasse ship, die Klassen UBoot
{                                             // und Enemy leiten sich von ihr
  public:                                     // ab.
  ship();
  virtual ~ship();

  virtual int GetRichtung() const;
  virtual int GetXKoord() const;
  virtual int GetYKoord() const;
  virtual void SetKoord(int, int);
  virtual void SetRichtung(int);

  virtual void Move(int);
  virtual void Shoot(int, int, int);
  virtual void TorpLaden() = 0;
  virtual int CheckTorpedo() const;
  virtual void SetTorp(int x);

  protected:
  int itsRichtung;
  Koord itsKoord;
  Torpedo* itsTorp[25];
};

#include &quot;ship.cpp&quot;

#endif
</code></pre>
<p>ship.cpp:</p>
<pre><code class="language-cpp">#ifndef SHIP_CPP
#define SHIP_CPP

#include &quot;defs.h&quot;
#include &quot;Koord.h&quot;
#include &quot;ship.h&quot;

ship::ship()
{}

ship::~ship()
{}

int ship::GetRichtung() const
{
  return itsRichtung;
}

int ship::GetXKoord() const
{
  return itsKoord.GetX();
}

int ship::GetYKoord() const
{
  return itsKoord.GetY();
}

void ship::SetKoord(int x, int y)
{
  itsKoord.SetX(x);
  itsKoord.SetY(y);
}

void ship::SetRichtung(int richtung)
{
  itsRichtung = richtung;
}

void ship::Move(int i)
{
  int x = itsKoord.GetX();
  int y = itsKoord.GetY();
  switch(itsRichtung)
  {
    case NORDEN:
         itsKoord.SetY(y+i);

    case SUEDEN:
         itsKoord.SetY(y+i);

    case WESTEN:
         itsKoord.SetX(x-i);

    case OSTEN:
         itsKoord.SetX(x+i);
  }
}

void ship::Shoot(int richtung, int x, int y)
{
  int i = CheckTorpedo();
  itsTorp[i]-&gt;SetRichtung(richtung);
  itsTorp[i]-&gt;SetZiel(x, y);
}

int ship::CheckTorpedo() const               // Funktion zur überprüfung welcher
{                                            // Torpedo der erste nicht
  int i;                                     // abgefeuerte Torpedo ist.
  for(i = 0; i &lt; 25; i++)
  {
    if (itsTorp[i] != 0)
    {
      break;
    }
  }
  return i;
}

void ship::SetTorp(int x)
{
  delete itsTorp[x];
  itsTorp[x] = 0;
}

#endif
</code></pre>
<p>Enemy.h:</p>
<pre><code class="language-cpp">#ifndef ENEMY_H
#define ENEMY_H

#include &quot;ship.h&quot;
#include &quot;State.h&quot;
#include &quot;WasserBombe.h&quot;

class Enemy : public ship
{
  public:
  Enemy();
  Enemy(int, int);
  ~Enemy();

  void BombeLaden();
  int CheckBombe() const;
  void ShootBombe();
  void TorpLaden();

  void Reagiere();
  void ChangeState(State * newState);
  int GetPlayer() const;
  void SearchPlayer() const;

  private:
  State * CurrentState;
  WasserBombe * itsBomben[30];
};

#include &quot;Enemy.cpp&quot;

#endif
</code></pre>
<p>Enemy.cpp:</p>
<pre><code class="language-cpp">#ifndef ENEMY_CPP
#define ENEMY_CPP

#include &lt;iostream&gt;

#include &quot;defs.h&quot;
#include &quot;State.h&quot;
#include &quot;Torpedo.h&quot;
#include &quot;WasserBombe.h&quot;
#include &quot;Enemy.h&quot;

Enemy::Enemy()
{
  this-&gt;TorpLaden();
  this-&gt;BombeLaden();
}

Enemy::Enemy(int x, int y)
{
  itsKoord.SetX(x);
  itsKoord.SetY(y);
}

Enemy::~Enemy()
{}

int Enemy::CheckBombe() const
{
  int i;
  for(i = 0; i &lt; 25; i++)
  {
    if (itsBomben[i] != 0)
    {
      break;
    }
  }
  return i;
}

void Enemy::ShootBombe()
{

}

void Enemy::BombeLaden()
{
  for (int i = 0; i &lt; 30; i++)
  {
    itsBomben[i] = new WasserBombe;
  }
}

void Enemy::TorpLaden()
{
  for (int i = 0; i &lt; 25; i++)
  {
    itsTorp[i] = new Torpedo;
  }
}

void Enemy::Reagiere()
{
  CurrentState-&gt;Execute(this);
}

void Enemy::ChangeState(State * newState)
{
  delete CurrentState;
  CurrentState = newState;
}

int Enemy::GetPlayer() const
{
  std::cout &lt;&lt; &quot;Get Player&quot; &lt;&lt; std::endl;
  return UNBEKANNT;
}

void Enemy::SearchPlayer() const
{
  std::cout &lt;&lt; &quot;Search Player&quot; &lt;&lt; std::endl;
}

#endif
</code></pre>
<p>UBoot.h:</p>
<pre><code class="language-cpp">#ifndef UBOOT_H
#define UBOOT_H

#include &quot;ship.h&quot;

class UBoot : public ship
{
  public:
  UBoot();
  UBoot(int, int);
  ~UBoot();

  void TorpLaden();
};

#include &quot;UBoot.cpp&quot;

#endif
</code></pre>
<p>UBoot.cpp:</p>
<pre><code class="language-cpp">#ifndef UBOOT_CPP
#define UBOOT_CPP

#include &lt;iostream&gt;
#include &quot;UBoot.h&quot;

UBoot::UBoot()
{
  itsKoord.SetX(0);
  itsKoord.SetY(0);
}

UBoot::UBoot(int x, int y)
{
  itsKoord.SetX(x);
  itsKoord.SetY(y);
}

UBoot::~UBoot()
{}

void UBoot::TorpLaden()
{
  for(int i = 0; i &lt; 25; i++)
  {
    itsTorp[i] = new Torpedo;
    i++;
    std::cout &lt;&lt; &quot;Torpedo &quot; &lt;&lt; i &lt;&lt; &quot; geladen!&quot;;
    i--;
  }
}

#endif
</code></pre>
<p>sry dass es so viel code is.</p>
<p>Mfg Yazoo</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/203516/hilfe-prob-bei-nem-prog</link><generator>RSS for Node</generator><lastBuildDate>Wed, 07 Oct 2026 18:15:05 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/203516.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 23 Jan 2008 15:15:29 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Hilfe Prob bei nem Prog on Wed, 23 Jan 2008 15:29:24 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe ein Problem in meinem Prog &quot;UBoot Jagd&quot;:</p>
<p>Wenn ich es starte stürtzt es nach dem Aufruf der Funktion &quot;Reagiere()&quot; eines Enemy Objektes ab.<br />
Mein Borland kompiler zeigt keine fehler an, jedoch der minimalist GNU für Windows nicht:</p>
<pre><code>&quot;WasserBombe.cpp&quot;: C:/***/UBoot Jagd/WasserBombe.cpp multiple definition of `WasserBombe::GetXKoord() const' in Zeile 24
windows\Debug_Build\data.obj:C:/***/UBoot Jagd/WasserBombe.cpp first defined here
windows\Debug_Build\StatePlayerUnknown.obj: In function `ZNK11WasserBombe9GetYKoordEv':
</code></pre>
<p>Das sagt er bei ALLEN Funktionen meiner Klassen. Ich habe das State Pattern Desing verwendet.</p>
<p>Hier mein Prog:</p>
<p>data.cpp:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &quot;defs.h&quot;
#include &quot;UBoot.h&quot;
#include &quot;Enemy.h&quot;
using namespace std;

int main()
{
  Enemy test;
  string input;

  while(input != &quot;exit&quot;)
  {
    cout &lt;&lt; &quot;anfang der schleife&quot; &lt;&lt; endl;
    test.Reagiere();         // Hier Absturtz
  }
  return 0;
}
</code></pre>
<p>defs.h:</p>
<pre><code class="language-cpp">#ifndef DEFS_H
#define DEFS_H

#define NORDEN    0
#define WESTEN    1
#define OSTEN     2
#define SUEDEN    3
#define UNBEKANNT 4
#define GEFUNDEN  5

#endif
</code></pre>
<p>Koord.h:</p>
<pre><code class="language-cpp">#ifndef KOORD_H
#define KOORD_H

class Koord                                         // Klasse Koord um den
{                                                   // standort eines Objekts
  public:                                           // zu speichern.
  Koord();
  virtual ~Koord();

  virtual int GetX() const;
  virtual int GetY() const;
  virtual void SetX(int);
  virtual void SetY(int);
  virtual void SetAll(int, int);

  private:
  int itsX;
  int itsY;
};

#include &quot;Koord.cpp&quot;

#endif
</code></pre>
<p>Koord.cpp:</p>
<pre><code class="language-cpp">#ifndef KOORD_CPP
#define KOORD_CPP

#include &quot;Koord.h&quot;

Koord::Koord()
{
  itsX = 0;
  itsY = 0;
}

Koord::~Koord()
{}

int Koord::GetX() const
{
  return itsX;
}

int Koord::GetY() const
{
  return itsY;
}

void Koord::SetX(int x)
{
  itsX = x;
}

void Koord::SetY(int y)
{
  itsY = y;
}

void Koord::SetAll(int x, int y)
{
  itsX = x;
  itsY = y;
}

#endif
</code></pre>
<p>WasserBombe.h:</p>
<pre><code class="language-cpp">#ifndef WASSER_BOMBE_H
#define WASSER_BOMBE_H

#include &quot;Koord.h&quot;

class WasserBombe
{
  public:
  WasserBombe();
  virtual ~WasserBombe();

  virtual void SetXKoord(int);
  virtual void SetYKoord(int);
  virtual int GetXKoord() const;
  virtual int GetYKoord() const;

  private:
  Koord itsKoord;
};

#include &quot;WasserBombe.cpp&quot;

#endif
</code></pre>
<p>WasserBombe.cpp:</p>
<pre><code class="language-cpp">#ifndef WASSER_BOMBE_CPP
#define WASSER_BOMBE_CPP

#include &quot;Koord.h&quot;
#include &quot;WasserBombe.h&quot;

WasserBombe::WasserBombe()
{}

WasserBombe::~WasserBombe()
{}

void WasserBombe::SetXKoord(int x)
{
  itsKoord.SetX(x);
}

void WasserBombe::SetYKoord(int y)
{
  itsKoord.SetY(y);
}

int WasserBombe::GetXKoord() const
{
  return itsKoord.GetX();
}

int WasserBombe::GetYKoord() const
{
  return itsKoord.GetY();
}

#endif
</code></pre>
<p>Torpedo.h:</p>
<pre><code class="language-cpp">#ifndef TORPEDO_H
#define TORPEDO_H

#include &quot;Koord.h&quot;

class Torpedo                                   // Klasse Torpedo
{
  public:
  Torpedo();
  virtual ~Torpedo();

  virtual int GetRichtung() const;
  virtual int GetXKoord() const;
  virtual int GetYKoord() const;
  virtual int GetZielX() const;
  virtual int GetZielY() const;
  virtual void SetZiel(int, int);
  virtual void SetKoord(int, int);
  virtual void SetRichtung(int);

  virtual void Move();

  private:
  int itsRichtung;
  Koord itsKoord;
  Koord itsZiel;
};

#include &quot;Torpedo.cpp&quot;

#endif
</code></pre>
<p>Torpedo.cpp:</p>
<pre><code class="language-cpp">#ifndef TORPEDO_CPP
#define TORPEDO_CPP

#include &quot;defs.h&quot;
#include &quot;Koord.h&quot;
#include &quot;Torpedo.h&quot;

Torpedo::Torpedo()
{}

Torpedo::~Torpedo()
{}

int Torpedo::GetRichtung() const
{
  return itsRichtung;
}

int Torpedo::GetXKoord() const
{
  return itsKoord.GetX();
}

int Torpedo::GetYKoord() const
{
  return itsKoord.GetY();
}

int Torpedo::GetZielX() const
{
  return itsZiel.GetX();
}

int Torpedo::GetZielY() const
{
  return itsZiel.GetY();
}

void Torpedo::SetZiel(int x, int y)
{
  itsZiel.SetX(x);
  itsZiel.SetY(y);
}

void Torpedo::SetKoord(int x, int y)
{
  itsKoord.SetX(x);
  itsKoord.SetY(y);
}

void Torpedo::SetRichtung(int richtung)
{
  itsRichtung = richtung;
}

void Torpedo::Move()
{
  int x = itsKoord.GetX();
  int y = itsKoord.GetY();
  switch(itsRichtung)
  {
    case NORDEN:
         itsKoord.SetY(y+1);

    case SUEDEN:
         itsKoord.SetY(y+1);

    case WESTEN:
         itsKoord.SetX(x-1);

    case OSTEN:
         itsKoord.SetX(x+1);
  }
}

#endif
</code></pre>
<p>State.h:</p>
<pre><code class="language-cpp">#ifndef STATE_H
#define STATE_H

class Enemy;

class State
{
  public:
  virtual ~State(){}
  virtual void Execute(Enemy*) = 0;
};

#endif
</code></pre>
<p>StatePlayerNorth.h:</p>
<pre><code class="language-cpp">#ifndef STATE_PLAYER_NORTH_H
#define STATE_PLAYER_NORTH_H

#include &quot;Enemy.h&quot;
#include &quot;State.h&quot;

class State_PlayerNorth : public State
{
  public:
  State_PlayerNorth(){}
  virtual void Execute(Enemy*);
};

#include &quot;StatePlayerNorth.cpp&quot;

#endif
</code></pre>
<p>StatePlayerNorth.cpp:</p>
<pre><code class="language-cpp">#ifndef STATE_PLAYER_NORTH_CPP
#define STATE_PLAYER_NORTH_CPP

#include &quot;Enemy.h&quot;
#include &quot;defs.h&quot;
#include &quot;StatePlayerNorth.h&quot;
#include &quot;StatePlayerWest.h&quot;
#include &quot;StatePlayerEast.h&quot;
#include &quot;StatePlayerSouth.h&quot;
#include &quot;StatePlayerGot.h&quot;
#include &quot;StatePlayerUnknown.h&quot;

void State_PlayerNorth::Execute(Enemy * someEnemy)
{
  switch(someEnemy-&gt;GetPlayer())
  {
    case NORDEN:
    {
      someEnemy-&gt;SetRichtung(NORDEN);
      someEnemy-&gt;Move(1);
    }
    case WESTEN:
    {
      someEnemy-&gt;ChangeState(new State_PlayerWest);
      someEnemy-&gt;Reagiere();
    }
    case OSTEN:
    {
      someEnemy-&gt;ChangeState(new State_PlayerEast);
      someEnemy-&gt;Reagiere();
    }
    case SUEDEN:
    {
      someEnemy-&gt;ChangeState(new State_PlayerSouth);
      someEnemy-&gt;Reagiere();
    }
    case UNBEKANNT:
    {
      someEnemy-&gt;ChangeState(new State_PlayerUnknown);
    }
    case GEFUNDEN:
    {
      someEnemy-&gt;ChangeState(new State_PlayerGot);
    }
  } 
}

#endif
</code></pre>
<p>StatePlayerEast.h:</p>
<pre><code class="language-cpp">#ifndef STATE_PLAYER_EAST_H
#define STATE_PLAYER_EAST_H

#include &quot;Enemy.h&quot;
#include &quot;State.h&quot;

class State_PlayerEast : public State
{
  public:
  State_PlayerEast(){}
  virtual void Execute(Enemy*);
};

#include &quot;StatePlayerEast.cpp&quot;

#endif
</code></pre>
<p>StatePlayerEast.cpp:</p>
<pre><code class="language-cpp">#ifndef STATE_PLAYER_EAST_CPP
#define STATE_PLAYER_EAST_CPP

#include &quot;Enemy.h&quot;
#include &quot;defs.h&quot;
#include &quot;StatePlayerNorth.h&quot;
#include &quot;StatePlayerWest.h&quot;
#include &quot;StatePlayerEast.h&quot;
#include &quot;StatePlayerSouth.h&quot;
#include &quot;StatePlayerGot.h&quot;
#include &quot;StatePlayerUnknown.h&quot;

void State_PlayerEast::Execute(Enemy * someEnemy)
{
  switch(someEnemy-&gt;GetPlayer())
  {
    case NORDEN:
    {
      someEnemy-&gt;ChangeState(new State_PlayerNorth);
      someEnemy-&gt;Reagiere();
    }
    case WESTEN:
    {
      someEnemy-&gt;ChangeState(new State_PlayerWest);
      someEnemy-&gt;Reagiere();
    }
    case OSTEN:
    {
      someEnemy-&gt;SetRichtung(OSTEN);
      someEnemy-&gt;Move(1);
    }
    case SUEDEN:
    {
      someEnemy-&gt;ChangeState(new State_PlayerSouth);
      someEnemy-&gt;Reagiere();
    }
    case UNBEKANNT:
    {
      someEnemy-&gt;ChangeState(new State_PlayerUnknown);
      someEnemy-&gt;Reagiere();
    }
    case GEFUNDEN:
    {
      someEnemy-&gt;ChangeState(new State_PlayerGot);
      someEnemy-&gt;Reagiere();
    }
  } 
}

#endif
</code></pre>
<p>StatePlayerWest.h:</p>
<pre><code class="language-cpp">#ifndef STATE_PLAYER_WEST_H
#define STATE_PLAYER_WEST_H

#include &quot;Enemy.h&quot;
#include &quot;State.h&quot;

class State_PlayerWest : public State
{
  public:
  State_PlayerWest(){}
  virtual void Execute(Enemy*);
};

#include &quot;StatePlayerWest.cpp&quot;

#endif
</code></pre>
<p>StatePlayerWest.cpp:</p>
<pre><code class="language-cpp">#ifndef STATE_PLAYER_WEST_CPP
#define STATE_PLAYER_WEST_CPP

#include &quot;Enemy.h&quot;
#include &quot;defs.h&quot;
#include &quot;StatePlayerNorth.h&quot;
#include &quot;StatePlayerWest.h&quot;
#include &quot;StatePlayerEast.h&quot;
#include &quot;StatePlayerSouth.h&quot;
#include &quot;StatePlayerGot.h&quot;
#include &quot;StatePlayerUnknown.h&quot;

void State_PlayerWest::Execute(Enemy * someEnemy)
{
  switch(someEnemy-&gt;GetPlayer())
  {
    case NORDEN:
    {
      someEnemy-&gt;ChangeState(new State_PlayerNorth);
      someEnemy-&gt;Reagiere();
    }
    case WESTEN:
    {
      someEnemy-&gt;SetRichtung(WESTEN);
      someEnemy-&gt;Move(1);
    }
    case OSTEN:
    {
      someEnemy-&gt;ChangeState(new State_PlayerEast);
      someEnemy-&gt;Reagiere();
    }
    case SUEDEN:
    {
      someEnemy-&gt;ChangeState(new State_PlayerSouth);
      someEnemy-&gt;Reagiere();
    }
    case UNBEKANNT:
    {
      someEnemy-&gt;ChangeState(new State_PlayerUnknown);
      someEnemy-&gt;Reagiere();
    }
    case GEFUNDEN:
    {
      someEnemy-&gt;ChangeState(new State_PlayerGot);
      someEnemy-&gt;Reagiere();
    }
  } 
}

#endif
</code></pre>
<p>StatePlayerSouth.h:</p>
<pre><code class="language-cpp">#ifndef STATE_PLAYER_SOUTH_H
#define STATE_PLAYER_SOUTH_H

#include &quot;Enemy.h&quot;
#include &quot;State.h&quot;

class State_PlayerSouth : public State
{
  public:
  State_PlayerSouth(){}
  virtual void Execute(Enemy*);
};

#include &quot;StatePlayerSouth.cpp&quot;

#endif
</code></pre>
<p>StatePlayerSouth.cpp:</p>
<pre><code class="language-cpp">#ifndef STATE_PLAYER_SOUTH_CPP
#define STATE_PLAYER_SOUTH_CPP

#include &quot;Enemy.h&quot;
#include &quot;defs.h&quot;
#include &quot;StatePlayerNorth.h&quot;
#include &quot;StatePlayerWest.h&quot;
#include &quot;StatePlayerEast.h&quot;
#include &quot;StatePlayerSouth.h&quot;
#include &quot;StatePlayerGot.h&quot;
#include &quot;StatePlayerUnknown.h&quot;

void State_PlayerSouth::Execute(Enemy * someEnemy)
{
  switch(someEnemy-&gt;GetPlayer())
  {
    case NORDEN:
    {
      someEnemy-&gt;ChangeState(new State_PlayerNorth);
      someEnemy-&gt;Reagiere();
    }
    case WESTEN:
    {
      someEnemy-&gt;ChangeState(new State_PlayerWest);
      someEnemy-&gt;Reagiere();
    }
    case OSTEN:
    {
      someEnemy-&gt;ChangeState(new State_PlayerEast);
      someEnemy-&gt;Reagiere();
    }
    case SUEDEN:
    {
      someEnemy-&gt;SetRichtung(SUEDEN);
      someEnemy-&gt;Move(1);
    }
    case UNBEKANNT:
    {
      someEnemy-&gt;ChangeState(new State_PlayerUnknown);
    }
    case GEFUNDEN:
    {
      someEnemy-&gt;ChangeState(new State_PlayerGot);
    }
  } 
}

#endif
</code></pre>
<p>StatePlayerGot.h:</p>
<pre><code class="language-cpp">#ifndef STATE_PLAYER_GOT_H
#define STATE_PLAYER_GOT_H

#include &quot;Enemy.h&quot;
#include &quot;State.h&quot;

class State_PlayerGot : public State
{
  public:
  State_PlayerGot(){}
  virtual void Execute(Enemy*);
};

#include &quot;StatePlayerGot.cpp&quot;

#endif
</code></pre>
<p>StatePlayerGot.cpp:</p>
<pre><code class="language-cpp">#ifndef STATE_PLAYER_GOT_CPP
#define STATE_PLAYER_GOT_CPP

#include &quot;Enemy.h&quot;
#include &quot;defs.h&quot;
#include &quot;StatePlayerNorth.h&quot;
#include &quot;StatePlayerWest.h&quot;
#include &quot;StatePlayerEast.h&quot;
#include &quot;StatePlayerSouth.h&quot;
#include &quot;StatePlayerGot.h&quot;
#include &quot;StatePlayerUnknown.h&quot;

void State_PlayerGot::Execute(Enemy * someEnemy)
{
  switch(someEnemy-&gt;GetPlayer())
  {
    case NORDEN:
    {
      someEnemy-&gt;ChangeState(new State_PlayerNorth);
      someEnemy-&gt;Reagiere();
    }
    case WESTEN:
    {
      someEnemy-&gt;ChangeState(new State_PlayerWest);
      someEnemy-&gt;Reagiere();
    }
    case OSTEN:
    {
      someEnemy-&gt;ChangeState(new State_PlayerEast);
      someEnemy-&gt;Reagiere();
    }
    case SUEDEN:
    {
      someEnemy-&gt;ChangeState(new State_PlayerSouth);
      someEnemy-&gt;Reagiere();
    }
    case UNBEKANNT:
    {
      someEnemy-&gt;ChangeState(new State_PlayerUnknown);
      someEnemy-&gt;Reagiere();
    }
    case GEFUNDEN:
    {
      //            Schießen und wegfahren
    }
  } 
}

#endif
</code></pre>
<p>StatePlayerUnknown.h:</p>
<pre><code class="language-cpp">#ifndef STATE_PLAYER_UNKNOWN_H
#define STATE_PLAYER_UNKNOWN_H

#include &quot;Enemy.h&quot;
#include &quot;State.h&quot;

class State_PlayerUnknown : public State
{
  public:
  State_PlayerUnknown(){}
  virtual void Execute(Enemy*);
};

#include &quot;StatePlayerUnknown.cpp&quot;

#endif
</code></pre>
<p>StatePlayerUnknown.cpp:</p>
<pre><code class="language-cpp">#ifndef STATE_PLAYER_UNKNOWN_CPP
#define STATE_PLAYER_UNKNOWN_CPP

#include &quot;Enemy.h&quot;
#include &quot;defs.h&quot;
#include &quot;StatePlayerNorth.h&quot;
#include &quot;StatePlayerWest.h&quot;
#include &quot;StatePlayerEast.h&quot;
#include &quot;StatePlayerSouth.h&quot;
#include &quot;StatePlayerGot.h&quot;
#include &quot;StatePlayerUnknown.h&quot;

void State_PlayerUnknown::Execute(Enemy * someEnemy)
{
  switch(someEnemy-&gt;GetPlayer())
  {
    case NORDEN:
    {
      someEnemy-&gt;ChangeState(new State_PlayerNorth);
      someEnemy-&gt;Reagiere();
    }
    case WESTEN:
    {
      someEnemy-&gt;ChangeState(new State_PlayerWest);
      someEnemy-&gt;Reagiere();
    }
    case OSTEN:
    {
      someEnemy-&gt;ChangeState(new State_PlayerEast);
      someEnemy-&gt;Reagiere();
    }
    case SUEDEN:
    {
      someEnemy-&gt;ChangeState(new State_PlayerSouth);
      someEnemy-&gt;Reagiere();
    }
    case UNBEKANNT:
    {
      someEnemy-&gt;SearchPlayer();
    }
    case GEFUNDEN:
    {
      someEnemy-&gt;ChangeState(new State_PlayerGot);
      someEnemy-&gt;Reagiere();
    }
  } 
}

#endif
</code></pre>
<p>ship.h:</p>
<pre><code class="language-cpp">#ifndef SHIP_H
#define SHIP_H

#include &quot;Koord.h&quot;
#include &quot;Torpedo.h&quot;

class ship                                    // Klasse ship, die Klassen UBoot
{                                             // und Enemy leiten sich von ihr
  public:                                     // ab.
  ship();
  virtual ~ship();

  virtual int GetRichtung() const;
  virtual int GetXKoord() const;
  virtual int GetYKoord() const;
  virtual void SetKoord(int, int);
  virtual void SetRichtung(int);

  virtual void Move(int);
  virtual void Shoot(int, int, int);
  virtual void TorpLaden() = 0;
  virtual int CheckTorpedo() const;
  virtual void SetTorp(int x);

  protected:
  int itsRichtung;
  Koord itsKoord;
  Torpedo* itsTorp[25];
};

#include &quot;ship.cpp&quot;

#endif
</code></pre>
<p>ship.cpp:</p>
<pre><code class="language-cpp">#ifndef SHIP_CPP
#define SHIP_CPP

#include &quot;defs.h&quot;
#include &quot;Koord.h&quot;
#include &quot;ship.h&quot;

ship::ship()
{}

ship::~ship()
{}

int ship::GetRichtung() const
{
  return itsRichtung;
}

int ship::GetXKoord() const
{
  return itsKoord.GetX();
}

int ship::GetYKoord() const
{
  return itsKoord.GetY();
}

void ship::SetKoord(int x, int y)
{
  itsKoord.SetX(x);
  itsKoord.SetY(y);
}

void ship::SetRichtung(int richtung)
{
  itsRichtung = richtung;
}

void ship::Move(int i)
{
  int x = itsKoord.GetX();
  int y = itsKoord.GetY();
  switch(itsRichtung)
  {
    case NORDEN:
         itsKoord.SetY(y+i);

    case SUEDEN:
         itsKoord.SetY(y+i);

    case WESTEN:
         itsKoord.SetX(x-i);

    case OSTEN:
         itsKoord.SetX(x+i);
  }
}

void ship::Shoot(int richtung, int x, int y)
{
  int i = CheckTorpedo();
  itsTorp[i]-&gt;SetRichtung(richtung);
  itsTorp[i]-&gt;SetZiel(x, y);
}

int ship::CheckTorpedo() const               // Funktion zur überprüfung welcher
{                                            // Torpedo der erste nicht
  int i;                                     // abgefeuerte Torpedo ist.
  for(i = 0; i &lt; 25; i++)
  {
    if (itsTorp[i] != 0)
    {
      break;
    }
  }
  return i;
}

void ship::SetTorp(int x)
{
  delete itsTorp[x];
  itsTorp[x] = 0;
}

#endif
</code></pre>
<p>Enemy.h:</p>
<pre><code class="language-cpp">#ifndef ENEMY_H
#define ENEMY_H

#include &quot;ship.h&quot;
#include &quot;State.h&quot;
#include &quot;WasserBombe.h&quot;

class Enemy : public ship
{
  public:
  Enemy();
  Enemy(int, int);
  ~Enemy();

  void BombeLaden();
  int CheckBombe() const;
  void ShootBombe();
  void TorpLaden();

  void Reagiere();
  void ChangeState(State * newState);
  int GetPlayer() const;
  void SearchPlayer() const;

  private:
  State * CurrentState;
  WasserBombe * itsBomben[30];
};

#include &quot;Enemy.cpp&quot;

#endif
</code></pre>
<p>Enemy.cpp:</p>
<pre><code class="language-cpp">#ifndef ENEMY_CPP
#define ENEMY_CPP

#include &lt;iostream&gt;

#include &quot;defs.h&quot;
#include &quot;State.h&quot;
#include &quot;Torpedo.h&quot;
#include &quot;WasserBombe.h&quot;
#include &quot;Enemy.h&quot;

Enemy::Enemy()
{
  this-&gt;TorpLaden();
  this-&gt;BombeLaden();
}

Enemy::Enemy(int x, int y)
{
  itsKoord.SetX(x);
  itsKoord.SetY(y);
}

Enemy::~Enemy()
{}

int Enemy::CheckBombe() const
{
  int i;
  for(i = 0; i &lt; 25; i++)
  {
    if (itsBomben[i] != 0)
    {
      break;
    }
  }
  return i;
}

void Enemy::ShootBombe()
{

}

void Enemy::BombeLaden()
{
  for (int i = 0; i &lt; 30; i++)
  {
    itsBomben[i] = new WasserBombe;
  }
}

void Enemy::TorpLaden()
{
  for (int i = 0; i &lt; 25; i++)
  {
    itsTorp[i] = new Torpedo;
  }
}

void Enemy::Reagiere()
{
  CurrentState-&gt;Execute(this);
}

void Enemy::ChangeState(State * newState)
{
  delete CurrentState;
  CurrentState = newState;
}

int Enemy::GetPlayer() const
{
  std::cout &lt;&lt; &quot;Get Player&quot; &lt;&lt; std::endl;
  return UNBEKANNT;
}

void Enemy::SearchPlayer() const
{
  std::cout &lt;&lt; &quot;Search Player&quot; &lt;&lt; std::endl;
}

#endif
</code></pre>
<p>UBoot.h:</p>
<pre><code class="language-cpp">#ifndef UBOOT_H
#define UBOOT_H

#include &quot;ship.h&quot;

class UBoot : public ship
{
  public:
  UBoot();
  UBoot(int, int);
  ~UBoot();

  void TorpLaden();
};

#include &quot;UBoot.cpp&quot;

#endif
</code></pre>
<p>UBoot.cpp:</p>
<pre><code class="language-cpp">#ifndef UBOOT_CPP
#define UBOOT_CPP

#include &lt;iostream&gt;
#include &quot;UBoot.h&quot;

UBoot::UBoot()
{
  itsKoord.SetX(0);
  itsKoord.SetY(0);
}

UBoot::UBoot(int x, int y)
{
  itsKoord.SetX(x);
  itsKoord.SetY(y);
}

UBoot::~UBoot()
{}

void UBoot::TorpLaden()
{
  for(int i = 0; i &lt; 25; i++)
  {
    itsTorp[i] = new Torpedo;
    i++;
    std::cout &lt;&lt; &quot;Torpedo &quot; &lt;&lt; i &lt;&lt; &quot; geladen!&quot;;
    i--;
  }
}

#endif
</code></pre>
<p>sry dass es so viel code is.</p>
<p>Mfg Yazoo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1442086</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1442086</guid><dc:creator><![CDATA[Yazoo]]></dc:creator><pubDate>Wed, 23 Jan 2008 15:29:24 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe Prob bei nem Prog on Wed, 23 Jan 2008 15:25:46 GMT]]></title><description><![CDATA[<p>Dann zeig doch mal eine deiner Header-Dateien. Der Fehler sieht danach aus, daß du die Funktionen direkt im Header definiert - und diese dann in mehreren Quelldateien eingebunden hast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1442090</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1442090</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 23 Jan 2008 15:25:46 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe Prob bei nem Prog on Wed, 23 Jan 2008 15:31:26 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Dann zeig doch mal eine deiner Header-Dateien. Der Fehler sieht danach aus, daß du die Funktionen direkt im Header definiert - und diese dann in mehreren Quelldateien eingebunden hast.</p>
</blockquote>
<p>^<br />
|<br />
|<br />
|</p>
<p>Hab des ganze prog oben rein geschrieben, hab was zu schnell absendedn geklickt und es deshalb noch ma editiert, sry</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1442092</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1442092</guid><dc:creator><![CDATA[Yazoo]]></dc:creator><pubDate>Wed, 23 Jan 2008 15:31:26 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe Prob bei nem Prog on Wed, 23 Jan 2008 15:33:06 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &quot;UBoot.cpp&quot;
</code></pre>
<p>All sowas entfernen. Ich kenne keinen vernünftigen Anwendungsfall in dem man Sourcedateien includen müsste/könnte/sollte.</p>
<p>Gruß<br />
Don06</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1442094</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1442094</guid><dc:creator><![CDATA[Don06]]></dc:creator><pubDate>Wed, 23 Jan 2008 15:33:06 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe Prob bei nem Prog on Wed, 23 Jan 2008 15:37:10 GMT]]></title><description><![CDATA[<p>Don06 schrieb:</p>
<blockquote>
<pre><code class="language-cpp">#include &quot;UBoot.cpp&quot;
</code></pre>
<p>All sowas entfernen. Ich kenne keinen vernünftigen Anwendungsfall in dem man Sourcedateien includen müsste/könnte/sollte.</p>
<p>Gruß<br />
Don06</p>
</blockquote>
<p>hab ich gemacht fehler is der gleiche. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1442096</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1442096</guid><dc:creator><![CDATA[Yazoo]]></dc:creator><pubDate>Wed, 23 Jan 2008 15:37:10 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe Prob bei nem Prog on Wed, 23 Jan 2008 15:38:46 GMT]]></title><description><![CDATA[<p>Don06 schrieb:</p>
<blockquote>
<pre><code class="language-cpp">#include &quot;UBoot.cpp&quot;
</code></pre>
<p>All sowas entfernen. Ich kenne keinen vernünftigen Anwendungsfall in dem man Sourcedateien includen müsste/könnte/sollte.</p>
</blockquote>
<p>Ich schon - Templates. Aber das trifft hier nicht zu.<br />
(und normalerweise sollte man die dafür verwendeten Dateien nicht &quot;.cpp&quot; nennen)</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/16154">@Yazoo</a>: Don hat es schon auf den Punkt gebracht: du solltest die .cpp Dateien nicht direkt includen - die werden vom Compiler einzeln übersetzt und dann als Paket an den Linker übergeben, der sich das passende heraussucht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1442098</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1442098</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 23 Jan 2008 15:38:46 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe Prob bei nem Prog on Wed, 23 Jan 2008 15:40:43 GMT]]></title><description><![CDATA[<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> Alle #ifndef in den *.cpp Dateien sind überflüssig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1442101</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1442101</guid><dc:creator><![CDATA[Ramsis]]></dc:creator><pubDate>Wed, 23 Jan 2008 15:40:43 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe Prob bei nem Prog on Wed, 23 Jan 2008 15:43:42 GMT]]></title><description><![CDATA[<p>Ramsis schrieb:</p>
<blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> Alle #ifndef in den *.cpp Dateien sind überflüssig.</p>
</blockquote>
<p>wieso?</p>
<p>EDIT: Aso weil die cpps net included werden, richtig?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1442102</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1442102</guid><dc:creator><![CDATA[Yazoo]]></dc:creator><pubDate>Wed, 23 Jan 2008 15:43:42 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe Prob bei nem Prog on Wed, 23 Jan 2008 15:45:22 GMT]]></title><description><![CDATA[<p>ja</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1442106</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1442106</guid><dc:creator><![CDATA[Ramsis]]></dc:creator><pubDate>Wed, 23 Jan 2008 15:45:22 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe Prob bei nem Prog on Wed, 23 Jan 2008 15:51:43 GMT]]></title><description><![CDATA[<p>kk ich hab nu einiges an meinem Programmierstiel verbessern können aber das prob ist noch net gelöst...</p>
<p>hat einer ne Idee???<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1442112</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1442112</guid><dc:creator><![CDATA[Yazoo]]></dc:creator><pubDate>Wed, 23 Jan 2008 15:51:43 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe Prob bei nem Prog on Wed, 23 Jan 2008 15:53:22 GMT]]></title><description><![CDATA[<p>Tritt der Fehler immer noch für ALLE Funktionen auf? Wenn nein, hast du möglicherweise ein &quot;#include &quot;...cpp&quot; übersehen. Wenn ja, hilft vielleicht ein &quot;rebuild all&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1442114</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1442114</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 23 Jan 2008 15:53:22 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe Prob bei nem Prog on Wed, 23 Jan 2008 16:10:17 GMT]]></title><description><![CDATA[<p>MIST: Jetzt Kompiliert auch der Minimalist GNU, aber das prog stürtzt an der selben stelle immernoch ab.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1442128</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1442128</guid><dc:creator><![CDATA[Yazoo]]></dc:creator><pubDate>Wed, 23 Jan 2008 16:10:17 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe Prob bei nem Prog on Wed, 23 Jan 2008 16:25:24 GMT]]></title><description><![CDATA[<p>In der function Enemy::Reagiere()<br />
steht folgendes:</p>
<pre><code class="language-cpp">CurrentState-&gt;Execute(this);
</code></pre>
<p>dabei zeigt CurrentState ins nirvana. Du must mit new ein Object diesen Typs erstellen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1442140</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1442140</guid><dc:creator><![CDATA[Ramsis]]></dc:creator><pubDate>Wed, 23 Jan 2008 16:25:24 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe Prob bei nem Prog on Wed, 23 Jan 2008 16:30:32 GMT]]></title><description><![CDATA[<p>ist mir gerade im moment aufgefallen.</p>
<p>ich hab das prob gelöst indem ich im Konstrucktor erst ma ein new State_PlayerUnkown gemacht.</p>
<p>nu hab ich noch ein prob:</p>
<p>wenn ich das prog starte klapp alles, aber wenn ich iwas eingebe sagt er</p>
<pre><code>anfang der schleife
Get Player
Search Player
</code></pre>
<p>so wie es sein sollte, aber jedes 2. mal wo ich iwas eingebe sagt er nur:</p>
<pre><code>anfang der schleife
Get Player
</code></pre>
<p>Search Player fehlt, warum???</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1442144</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1442144</guid><dc:creator><![CDATA[Yazoo]]></dc:creator><pubDate>Wed, 23 Jan 2008 16:30:32 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe Prob bei nem Prog on Wed, 23 Jan 2008 16:31:05 GMT]]></title><description><![CDATA[<p>Dann wird es jetzt höchste Zeit sich mit dem Gebrauch eines Debuggers vertraut zu machen (Borland hat bestimmt einen an Bord). Damit kannst Du das Programm bis zu der Stelle durchgehen und Dir die Variableninhalte anschauen.</p>
<p>Dass jemand den kompletten Quellcode manuell durchsieht, oder jedes Dateischnipsel per Copy&amp;Paste zu einem Compiler bringt, kannst Du nicht erwarten <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> (was keine Aufforderung ist, ein Zipfile hier einzustellen :D)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1442145</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1442145</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 23 Jan 2008 16:31:05 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe Prob bei nem Prog on Wed, 23 Jan 2008 16:41:59 GMT]]></title><description><![CDATA[<p>hast recht.</p>
<p>Weißt einer ob und wo es ein gutes tut für den debugger vom Borland C++ BuilderX gibt???</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1442151</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1442151</guid><dc:creator><![CDATA[Yazoo]]></dc:creator><pubDate>Wed, 23 Jan 2008 16:41:59 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe Prob bei nem Prog on Thu, 24 Jan 2008 05:46:14 GMT]]></title><description><![CDATA[<p>prob gelöst:<br />
ich trottel habe die brek anweisungen vergessen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1442474</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1442474</guid><dc:creator><![CDATA[Yazoo]]></dc:creator><pubDate>Thu, 24 Jan 2008 05:46:14 GMT</pubDate></item></channel></rss>