<?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[fehlerhafter Konstruktur einer Klasse]]></title><description><![CDATA[<p>Hallo Progger,</p>
<p>ich kriege kriege folgende Fehlermeldung während dem Kompilieren:</p>
<pre><code>main.cpp:17: error: `anzahl' was not declared in this scope

main.cpp:20: error: `anzahl' was not declared in this scope

main.cpp: In constructor `Boot::Boot(int, double)':
main.cpp:23: error: no matching function for call to `strlen(std::string[20])'
C:/Dev-Cpp/include/string.h:49: note: candidates are: size_t strlen(const char*)
main.cpp:27: error: a function-definition is not allowed here before '{' token
main.cpp:27: error: expected `,' or `;' before '{' token

main.cpp: In function `int main(int, char**)':

main.cpp:38: error: expected primary-expression before &quot;void&quot;
main.cpp:38: error: expected `;' before &quot;void&quot;
main.cpp:77: error: `menue' undeclared (first use this function)
main.cpp:77: error: (Each undeclared identifier is reported only once for each function it appears in.)

main.cpp:78: error: no matching function for call to `Boot::Boot(int&amp;, std::string[20], int)'
main.cpp:12: note: candidates are: Boot::Boot(const Boot&amp;)
main.cpp:21: note:                 Boot::Boot(int, double)
main.cpp:79: error: no matching function for call to `Boot::Boot(int&amp;, std::string[20], int)'
main.cpp:12: note: candidates are: Boot::Boot(const Boot&amp;)
main.cpp:21: note:                 Boot::Boot(int, double)
main.cpp:80: error: no matching function for call to `Boot::Boot(int&amp;, std::string[20], int)'
main.cpp:12: note: candidates are: Boot::Boot(const Boot&amp;)
main.cpp:21: note:                 Boot::Boot(int, double)
</code></pre>
<p>leider weiss ich nicht was an meiner Konstruktordeklaration falsch sein soll. falls es an der fehlenden Konstrukturmethode liegt, habe ich auch eine 2. Variante geschrieben, bei der jedoch eine ähnliche Fehlermeldung kommt.</p>
<p>variante_1</p>
<pre><code>#include &lt;cstdlib&gt;
#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;vector&gt;
using namespace std;

std::string namen[20]; // initialisieren eines Array aller Namen der Vereinsmitglieder
std::string warteliste[10]; // initialisieren eines Array der überschüssigen gebuchten Namen
std::string namensliste[20]; // initialisieren eines Array aller gebuchten Namen

class Boot //Deklaration der Klasse Boot
{
  public:  
  int anzahlBesatzung; // Anzahl der Besatzung
  std::string besatzungsliste[]; //initialisieren eines Array der Namen von Besatzung
  double Kosten; //Kosten für Bootcharter
    Boot(int anzahl, std::string namensliste[anzahl], double kostenBoot); //Oberklassenkonstrukter der Klasse Boot mit 3 Übergabewerten
}; 

Boot::Boot(int anzahl, std::string namensliste[anzahl],double kostenBoot) //Konstruktor-Methode
{
     anzahlBesatzung=anzahl+1;    // 
     for(int i=0; i&lt;=strlen(namensliste); i++) (besatzungsliste[i]=namensliste[i]);
     Kosten=kostenBoot;

  int ausgabe(double bootKosten, int anzahl) // Ausgabefunktion mit Rückgabewert
  {
     cout&lt;&lt;&quot;Kosten pro Person: (bootkosten/anzahl)&quot;;
     return int(bootkosten/anzahl); 
  } 
}

int main(int argc, char *argv[])
{
    int anzahlAnmeldungen=0; // Zähler der Anmeldungen
    void menue(void)         // Menue-Funktion für diverse Wünsche
    {
         int *zeiger=0;      // Pointer um die Arrays bearbeiten
         char tasteneingabe='0'; // Variable für die Tasteneingabe
         std::string tmp;  //  String-Variable zur Ablage des Namen um ein String-Array zu durchsuchen
         do{                                       // Ausgabe des Menues
         cout&lt;&lt;&quot; 1 Anzeige der bisher angemeldeten Personen. &quot;&lt;&lt;endl;
         cout&lt;&lt;&quot; 2 Anmeldung zur Segelwoche. &quot;&lt;&lt;endl;
         cout&lt;&lt;&quot; 3 Abmeldung. &quot;&lt;&lt;endl;
         cout&lt;&lt;&quot; 4 Programmende. &quot;&lt;&lt;endl;
         cout&lt;&lt;&quot; Bitte waehlen sie einem Menuepunkt ueber die Tastaturziffer 1 bis 4 ! &quot;&lt;&lt;endl;
         cin&gt;&gt;tasteneingabe; // Eingabe über Tastatur
         if(tasteneingabe=='1')
         {
                               for(int i=0; i&lt;=strlen(namensliste); i++)
                               {
                               cout&lt;&lt;namensliste[i]&lt;&lt;endl;
                               }                      
         }
         else if(tasteneingabe=='2') 
              {
              anzahlAnmeldung++;
              cout&lt;&lt;&quot;Bitte ihren Namen eingeben, um diesen der Anmeldeliste hinzuzufügen. \n&quot;;
              scanf(&quot;%s&quot;, &amp;tmp);
              strcpy(std::string namensliste[anzahlAnmeldungen], tmp);
              }
         else if(tasteneingabe=='3') 
              {
              cout&lt;&lt;&quot;Bitte ihren Namen eingeben, um diesen der Anmeldeliste abzumelden. \n&quot;;
              scanf (&quot;%s&quot;, &amp;tmp);
              //if(tmp==(*zeiger)namenliste[i]) 
              //{
              //                                (*zeiger)namensliste[i]=NULL;
              //                                anzahlAnmeldungen--;
              //}
              }
         else if(tasteneingabe=='4') break;
         }while(tasteneingabe !='0');
    }
    menue();
    if (anzahlAnmeldungen&gt;=4 &amp;&amp; anzahlAnmeldungen&lt;6) Boot Boot_4(anzahlAnmeldungen, namensliste, 1000); // Definition und Initialisierung der Unterklasse Boot_4
    else if (anzahlAnmeldungen&gt;=6 &amp;&amp; anzahlAnmeldungen&lt;8) Boot Boot_6(anzahlAnmeldungen, namensliste, 1300); // Definition und Initialisierung der Unterklasse Boot_6
    else if (anzahlAnmeldungen&gt;=7 &amp;&amp; anzahlAnmeldungen&lt;8) Boot Boot_8(anzahlAnmeldungen, namensliste, 1500); // Definition und Initialisierung der Unterklasse Boot_8

    system(&quot;PAUSE&quot;);
    return EXIT_SUCCESS;
}
</code></pre>
<p>Variante_2</p>
<pre><code>#include &lt;vector&gt;
#include &lt;string&gt;
#include &lt;iostream&gt;
using namespace std;

std::string namen[20]; // initialisieren eines Array aller Namen der Vereinsmitglieder
std::string warteliste[10]; // initialisieren eines Array der überschüssigen gebuchten Namen
std::string namensliste[20]; // initialisieren eines Array aller gebuchten Namen

class Boot //Deklaration der Klasse Boot
{
  public:  
  int anzahlBesatzung; // Anzahl der Besatzung
  std::string besatzungsliste[]; //initialisieren eines Array der Namen von Besatzung
  double Kosten; //Kosten für Bootcharter
    Boot(int anzahl,string namensliste[anzahl],double kostenBoot); //Oberklassenkonstrukter der Klasse Boot mit 3 Übergabewerten
    {
     anzahlBesatzung=anzahl+1;    // 
     for(int i=0; i&lt;=strlen(namensliste); i++) (besatzungsliste[i]=namensliste[i]);
     Kosten=kostenBoot;

  int ausgabe(double bootKosten, int anzahl) // Ausgabefunktion mit Rückgabewert
  {
     cout&lt;&lt;&quot;Kosten pro Person: (bootkosten/anzahl)&quot;;
     return int(bootkosten/anzahl); 
  } 
}; 

int main(int argc, char *argv[])
{
    int anzahlAnmeldungen=0; // Zähler der Anmeldungen
    void menue(void)         // Menue-Funktion für diverse Wünsche
    {
         int *zeiger=0;      // Pointer um die Arrays bearbeiten
         char tasteneingabe='0'; // Variable für die Tasteneingabe
         std::string tmp;  //  String-Variable zur Ablage des Namen um ein String-Array zu durchsuchen
         do{                                       // Ausgabe des Menues
         cout&lt;&lt;&quot; 1 Anzeige der bisher angemeldeten Personen. \n&quot;;
         cout&lt;&lt;&quot; 2 Anmeldung zur Segelwoche. \n&quot;;
         cout&lt;&lt;&quot; 3 Abmeldung. \n&quot;;
         cout&lt;&lt;&quot; 4 Programmende. \n&quot;;
         cout&lt;&lt;&quot; Bitte waehlen sie einem Menuepunkt ueber die Tastaturziffer 1 bis 4 ! \n&quot;;
         cin&gt;&gt;tasteneingabe; // Eingabe über Tastatur
         if(tasteneingabe=='1')
         {
                               for(int i=0; i&lt;=strlen(namensliste); i++)
                               {
                               cout&lt;&lt;namensliste[i]&lt;&lt;endl;
                               }                      
         }
         else if(tasteneingabe=='2') 
              {
              anzahlAnmeldung++;
              cout&lt;&lt;&quot;Bitte ihren Namen eingeben, um diesen der Anmeldeliste hinzuzufügen. \n&quot;;
              scanf(&quot;%s&quot;, &amp;tmp);
              strcpy(std::string namensliste[anzahlAnmeldungen], tmp);
              }
         else if(tasteneingabe=='3') 
              {
	      cout&lt;&lt;&quot;Bitte ihren Namen eingeben, um diesen der Anmeldeliste abzumelden. \n&quot;;
              scanf (&quot;%s&quot;, &amp;tmp);
              //if(tmp==(*zeiger)namenliste[i]) 
              //{
              //                                (*zeiger)namensliste[i]=NULL;
              //                                anzahlAnmeldungen--;
              //}
              }
         else if(tasteneingabe=='4') break;
         }while(tasteneingabe !='0');
    }
    menue();
    if (anzahlAnmeldungen&gt;=4 &amp;&amp; anzahlAnmeldungen&lt;6) Boot Boot_4(anzahlAnmeldungen, namensliste, 1000); // Definition und Initialisierung der Unterklasse Boot_4
    else if (anzahlAnmeldungen&gt;=6 &amp;&amp; anzahlAnmeldungen&lt;8) Boot Boot_6(anzahlAnmeldungen, namensliste, 1300); // Definition und Initialisierung der Unterklasse Boot_6
    else if (anzahlAnmeldungen&gt;=7 &amp;&amp; anzahlAnmeldungen&lt;8) Boot Boot_8(anzahlAnmeldungen, namensliste, 1500); // Definition und Initialisierung der Unterklasse Boot_8

    system(&quot;PAUSE&quot;);
    return EXIT_SUCCESS;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/340051/fehlerhafter-konstruktur-einer-klasse</link><generator>RSS for Node</generator><lastBuildDate>Sat, 11 Apr 2026 12:21:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/340051.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 16 Oct 2016 09:53:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to fehlerhafter Konstruktur einer Klasse on Sun, 16 Oct 2016 09:53:41 GMT]]></title><description><![CDATA[<p>Hallo Progger,</p>
<p>ich kriege kriege folgende Fehlermeldung während dem Kompilieren:</p>
<pre><code>main.cpp:17: error: `anzahl' was not declared in this scope

main.cpp:20: error: `anzahl' was not declared in this scope

main.cpp: In constructor `Boot::Boot(int, double)':
main.cpp:23: error: no matching function for call to `strlen(std::string[20])'
C:/Dev-Cpp/include/string.h:49: note: candidates are: size_t strlen(const char*)
main.cpp:27: error: a function-definition is not allowed here before '{' token
main.cpp:27: error: expected `,' or `;' before '{' token

main.cpp: In function `int main(int, char**)':

main.cpp:38: error: expected primary-expression before &quot;void&quot;
main.cpp:38: error: expected `;' before &quot;void&quot;
main.cpp:77: error: `menue' undeclared (first use this function)
main.cpp:77: error: (Each undeclared identifier is reported only once for each function it appears in.)

main.cpp:78: error: no matching function for call to `Boot::Boot(int&amp;, std::string[20], int)'
main.cpp:12: note: candidates are: Boot::Boot(const Boot&amp;)
main.cpp:21: note:                 Boot::Boot(int, double)
main.cpp:79: error: no matching function for call to `Boot::Boot(int&amp;, std::string[20], int)'
main.cpp:12: note: candidates are: Boot::Boot(const Boot&amp;)
main.cpp:21: note:                 Boot::Boot(int, double)
main.cpp:80: error: no matching function for call to `Boot::Boot(int&amp;, std::string[20], int)'
main.cpp:12: note: candidates are: Boot::Boot(const Boot&amp;)
main.cpp:21: note:                 Boot::Boot(int, double)
</code></pre>
<p>leider weiss ich nicht was an meiner Konstruktordeklaration falsch sein soll. falls es an der fehlenden Konstrukturmethode liegt, habe ich auch eine 2. Variante geschrieben, bei der jedoch eine ähnliche Fehlermeldung kommt.</p>
<p>variante_1</p>
<pre><code>#include &lt;cstdlib&gt;
#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;vector&gt;
using namespace std;

std::string namen[20]; // initialisieren eines Array aller Namen der Vereinsmitglieder
std::string warteliste[10]; // initialisieren eines Array der überschüssigen gebuchten Namen
std::string namensliste[20]; // initialisieren eines Array aller gebuchten Namen

class Boot //Deklaration der Klasse Boot
{
  public:  
  int anzahlBesatzung; // Anzahl der Besatzung
  std::string besatzungsliste[]; //initialisieren eines Array der Namen von Besatzung
  double Kosten; //Kosten für Bootcharter
    Boot(int anzahl, std::string namensliste[anzahl], double kostenBoot); //Oberklassenkonstrukter der Klasse Boot mit 3 Übergabewerten
}; 

Boot::Boot(int anzahl, std::string namensliste[anzahl],double kostenBoot) //Konstruktor-Methode
{
     anzahlBesatzung=anzahl+1;    // 
     for(int i=0; i&lt;=strlen(namensliste); i++) (besatzungsliste[i]=namensliste[i]);
     Kosten=kostenBoot;

  int ausgabe(double bootKosten, int anzahl) // Ausgabefunktion mit Rückgabewert
  {
     cout&lt;&lt;&quot;Kosten pro Person: (bootkosten/anzahl)&quot;;
     return int(bootkosten/anzahl); 
  } 
}

int main(int argc, char *argv[])
{
    int anzahlAnmeldungen=0; // Zähler der Anmeldungen
    void menue(void)         // Menue-Funktion für diverse Wünsche
    {
         int *zeiger=0;      // Pointer um die Arrays bearbeiten
         char tasteneingabe='0'; // Variable für die Tasteneingabe
         std::string tmp;  //  String-Variable zur Ablage des Namen um ein String-Array zu durchsuchen
         do{                                       // Ausgabe des Menues
         cout&lt;&lt;&quot; 1 Anzeige der bisher angemeldeten Personen. &quot;&lt;&lt;endl;
         cout&lt;&lt;&quot; 2 Anmeldung zur Segelwoche. &quot;&lt;&lt;endl;
         cout&lt;&lt;&quot; 3 Abmeldung. &quot;&lt;&lt;endl;
         cout&lt;&lt;&quot; 4 Programmende. &quot;&lt;&lt;endl;
         cout&lt;&lt;&quot; Bitte waehlen sie einem Menuepunkt ueber die Tastaturziffer 1 bis 4 ! &quot;&lt;&lt;endl;
         cin&gt;&gt;tasteneingabe; // Eingabe über Tastatur
         if(tasteneingabe=='1')
         {
                               for(int i=0; i&lt;=strlen(namensliste); i++)
                               {
                               cout&lt;&lt;namensliste[i]&lt;&lt;endl;
                               }                      
         }
         else if(tasteneingabe=='2') 
              {
              anzahlAnmeldung++;
              cout&lt;&lt;&quot;Bitte ihren Namen eingeben, um diesen der Anmeldeliste hinzuzufügen. \n&quot;;
              scanf(&quot;%s&quot;, &amp;tmp);
              strcpy(std::string namensliste[anzahlAnmeldungen], tmp);
              }
         else if(tasteneingabe=='3') 
              {
              cout&lt;&lt;&quot;Bitte ihren Namen eingeben, um diesen der Anmeldeliste abzumelden. \n&quot;;
              scanf (&quot;%s&quot;, &amp;tmp);
              //if(tmp==(*zeiger)namenliste[i]) 
              //{
              //                                (*zeiger)namensliste[i]=NULL;
              //                                anzahlAnmeldungen--;
              //}
              }
         else if(tasteneingabe=='4') break;
         }while(tasteneingabe !='0');
    }
    menue();
    if (anzahlAnmeldungen&gt;=4 &amp;&amp; anzahlAnmeldungen&lt;6) Boot Boot_4(anzahlAnmeldungen, namensliste, 1000); // Definition und Initialisierung der Unterklasse Boot_4
    else if (anzahlAnmeldungen&gt;=6 &amp;&amp; anzahlAnmeldungen&lt;8) Boot Boot_6(anzahlAnmeldungen, namensliste, 1300); // Definition und Initialisierung der Unterklasse Boot_6
    else if (anzahlAnmeldungen&gt;=7 &amp;&amp; anzahlAnmeldungen&lt;8) Boot Boot_8(anzahlAnmeldungen, namensliste, 1500); // Definition und Initialisierung der Unterklasse Boot_8

    system(&quot;PAUSE&quot;);
    return EXIT_SUCCESS;
}
</code></pre>
<p>Variante_2</p>
<pre><code>#include &lt;vector&gt;
#include &lt;string&gt;
#include &lt;iostream&gt;
using namespace std;

std::string namen[20]; // initialisieren eines Array aller Namen der Vereinsmitglieder
std::string warteliste[10]; // initialisieren eines Array der überschüssigen gebuchten Namen
std::string namensliste[20]; // initialisieren eines Array aller gebuchten Namen

class Boot //Deklaration der Klasse Boot
{
  public:  
  int anzahlBesatzung; // Anzahl der Besatzung
  std::string besatzungsliste[]; //initialisieren eines Array der Namen von Besatzung
  double Kosten; //Kosten für Bootcharter
    Boot(int anzahl,string namensliste[anzahl],double kostenBoot); //Oberklassenkonstrukter der Klasse Boot mit 3 Übergabewerten
    {
     anzahlBesatzung=anzahl+1;    // 
     for(int i=0; i&lt;=strlen(namensliste); i++) (besatzungsliste[i]=namensliste[i]);
     Kosten=kostenBoot;

  int ausgabe(double bootKosten, int anzahl) // Ausgabefunktion mit Rückgabewert
  {
     cout&lt;&lt;&quot;Kosten pro Person: (bootkosten/anzahl)&quot;;
     return int(bootkosten/anzahl); 
  } 
}; 

int main(int argc, char *argv[])
{
    int anzahlAnmeldungen=0; // Zähler der Anmeldungen
    void menue(void)         // Menue-Funktion für diverse Wünsche
    {
         int *zeiger=0;      // Pointer um die Arrays bearbeiten
         char tasteneingabe='0'; // Variable für die Tasteneingabe
         std::string tmp;  //  String-Variable zur Ablage des Namen um ein String-Array zu durchsuchen
         do{                                       // Ausgabe des Menues
         cout&lt;&lt;&quot; 1 Anzeige der bisher angemeldeten Personen. \n&quot;;
         cout&lt;&lt;&quot; 2 Anmeldung zur Segelwoche. \n&quot;;
         cout&lt;&lt;&quot; 3 Abmeldung. \n&quot;;
         cout&lt;&lt;&quot; 4 Programmende. \n&quot;;
         cout&lt;&lt;&quot; Bitte waehlen sie einem Menuepunkt ueber die Tastaturziffer 1 bis 4 ! \n&quot;;
         cin&gt;&gt;tasteneingabe; // Eingabe über Tastatur
         if(tasteneingabe=='1')
         {
                               for(int i=0; i&lt;=strlen(namensliste); i++)
                               {
                               cout&lt;&lt;namensliste[i]&lt;&lt;endl;
                               }                      
         }
         else if(tasteneingabe=='2') 
              {
              anzahlAnmeldung++;
              cout&lt;&lt;&quot;Bitte ihren Namen eingeben, um diesen der Anmeldeliste hinzuzufügen. \n&quot;;
              scanf(&quot;%s&quot;, &amp;tmp);
              strcpy(std::string namensliste[anzahlAnmeldungen], tmp);
              }
         else if(tasteneingabe=='3') 
              {
	      cout&lt;&lt;&quot;Bitte ihren Namen eingeben, um diesen der Anmeldeliste abzumelden. \n&quot;;
              scanf (&quot;%s&quot;, &amp;tmp);
              //if(tmp==(*zeiger)namenliste[i]) 
              //{
              //                                (*zeiger)namensliste[i]=NULL;
              //                                anzahlAnmeldungen--;
              //}
              }
         else if(tasteneingabe=='4') break;
         }while(tasteneingabe !='0');
    }
    menue();
    if (anzahlAnmeldungen&gt;=4 &amp;&amp; anzahlAnmeldungen&lt;6) Boot Boot_4(anzahlAnmeldungen, namensliste, 1000); // Definition und Initialisierung der Unterklasse Boot_4
    else if (anzahlAnmeldungen&gt;=6 &amp;&amp; anzahlAnmeldungen&lt;8) Boot Boot_6(anzahlAnmeldungen, namensliste, 1300); // Definition und Initialisierung der Unterklasse Boot_6
    else if (anzahlAnmeldungen&gt;=7 &amp;&amp; anzahlAnmeldungen&lt;8) Boot Boot_8(anzahlAnmeldungen, namensliste, 1500); // Definition und Initialisierung der Unterklasse Boot_8

    system(&quot;PAUSE&quot;);
    return EXIT_SUCCESS;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2511721</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2511721</guid><dc:creator><![CDATA[Julia_w]]></dc:creator><pubDate>Sun, 16 Oct 2016 09:53:41 GMT</pubDate></item><item><title><![CDATA[Reply to fehlerhafter Konstruktur einer Klasse on Sun, 16 Oct 2016 10:19:50 GMT]]></title><description><![CDATA[<p>Dein Lernmaterial scheint nicht brauchbar zu sein.</p>
<ol>
<li>strlen, strcpy und Co. gehören zu C-Strings. std::string bietet dafür Memberfunktionen. Eingelesen wird mit cin.</li>
<li>Funktionen werden nicht in anderen Funktionen definiert</li>
<li>Wenn du Arrays mit variabler Länge benötigst, benutze std::vector. Wenn du auf Arrays bestehst, muss es</li>
</ol>
<pre><code>Boot( int anzahl, std::string namensListe[]
</code></pre>
<p>lauten.</p>
<p>Nach weiteren Fehlern habe ich nicht gesucht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2511722</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2511722</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Sun, 16 Oct 2016 10:19:50 GMT</pubDate></item><item><title><![CDATA[Reply to fehlerhafter Konstruktur einer Klasse on Sun, 16 Oct 2016 13:40:18 GMT]]></title><description><![CDATA[<p>Hallo @ all</p>
<p>ich habe jetzt die C-Strings und scanf() rausgeworfen<br />
Jetzt funzt es auch halbwegs. Nur die Frage nach der Variante_1 und Variante_2 bleibt unklar. Wann brauche ich den diese Konstruktor-Methode? eventuell nur, wenn ich die den Konstruktor berladen möchte? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Variante_1</p>
<pre><code>#include &lt;cstdlib&gt;
#include &lt;iostream&gt;
#include &lt;string.h&gt;
#include &lt;vector&gt;
using namespace std;

std::string namen[20]; // initialisieren eines Array aller Namen der Vereinsmitglieder
std::string warteliste[10]; // initialisieren eines Array der überschüssigen gebuchten Namen
static std::string namensliste[20]; // initialisieren eines Array aller gebuchten Namen
int anzahlAnmeldungen=0; // Zähler der Anmeldungen

class Boot //Deklaration der Klasse Boot
{
  public:  
  int anzahlBesatzung; // Anzahl der Besatzung
  std::string besatzungsliste[]; //initialisieren eines Array der Namen von Besatzung
  double Kosten; //Kosten für Bootcharter
    Boot(int anzahl, std::string namensliste[], double kostenBoot) //Oberklassenkonstrukter der Klasse Boot mit 3 Übergabewerten
    {
     anzahlBesatzung=anzahl+1;    // 
     for(int i=0; i&lt;=20; i++) (besatzungsliste[i]=namensliste[i]);
     Kosten=kostenBoot;
    }   
  int ausgabe(double bootKosten, int anzahl) // Ausgabefunktion mit Rückgabewert
  {
     cout&lt;&lt;&quot;Kosten pro Person: (bootkosten/anzahl)&quot;;
     return int(bootKosten/anzahl); 
  } 
}; 

void menue(void)         // Menue-Funktion für diverse Wünsche
{
         int *zeiger=0;      // Pointer um die Arrays bearbeiten
         char tasteneingabe='0'; // Variable für die Tasteneingabe
         std::string tmp;  //  String-Variable zur Ablage des Namen um ein String-Array zu durchsuchen
         do{                                       // Ausgabe des Menues
         cout&lt;&lt;&quot; 1 Anzeige der bisher angemeldeten Personen. &quot;&lt;&lt;endl;
         cout&lt;&lt;&quot; 2 Anmeldung zur Segelwoche. &quot;&lt;&lt;endl;
         cout&lt;&lt;&quot; 3 Abmeldung. &quot;&lt;&lt;endl;
         cout&lt;&lt;&quot; 4 Programmende. &quot;&lt;&lt;endl;
         cout&lt;&lt;&quot; Bitte waehlen sie einem Menuepunkt ueber die Tastaturziffer 1 bis 4 ! &quot;&lt;&lt;endl;
         cin&gt;&gt;tasteneingabe; // Eingabe über Tastatur 
         if(tasteneingabe=='1')
         {
                               for(int i=0; i&lt;anzahlAnmeldungen+2; i++)
                               {
                               cout&lt;&lt;namensliste[i]&lt;&lt;endl;
                               }                      
         }
         else if(tasteneingabe=='2') 
              {
              anzahlAnmeldungen++;
              cout&lt;&lt;&quot;Bitte ihren Namen eingeben, um diesen der Anmeldeliste hinzuzufügen. \n&quot;;
              cin&gt;&gt;namensliste[anzahlAnmeldungen];
              }
         else if(tasteneingabe=='3') 
              {
              cout&lt;&lt;&quot;Bitte ihren Namen eingeben, um diesen der Anmeldeliste abzumelden. \n&quot;;
              cin&gt;&gt;tmp;
              for(int i=0; i&lt;=anzahlAnmeldungen; i++)
               {
                      if(tmp == namensliste[i])
                        {
                                              namensliste[i]=&quot;NULL&quot;;
                                              cout&lt;&lt;&quot;Ihr Name wurde von der Anmeldeliste gelöscht \n&quot;;
                                              anzahlAnmeldungen--;
                                              break;
                        }
                      else cout&lt;&lt;&quot;Name nicht gefunden! \n&quot;;
               }

              }
         else if(tasteneingabe=='4') break;
         }
         while(tasteneingabe !='0');
}

int main(int argc, char *argv[])
{
    menue();
    if (anzahlAnmeldungen&gt;=4 &amp;&amp; anzahlAnmeldungen&lt;6) Boot Boot_4(anzahlAnmeldungen, namensliste, 1000); // Definition und Initialisierung der Unterklasse Boot_4
    else if (anzahlAnmeldungen&gt;=6 &amp;&amp; anzahlAnmeldungen&lt;8) Boot Boot_6(anzahlAnmeldungen, namensliste, 1300); // Definition und Initialisierung der Unterklasse Boot_6
    else if (anzahlAnmeldungen&gt;=7 &amp;&amp; anzahlAnmeldungen&lt;8) Boot Boot_8(anzahlAnmeldungen, namensliste, 1500); // Definition und Initialisierung der Unterklasse Boot_8

    system(&quot;PAUSE&quot;);
}
</code></pre>
<p>Variante_2</p>
<pre><code>#include &lt;cstdlib&gt;
#include &lt;iostream&gt;
#include &lt;string.h&gt;
#include &lt;vector&gt;
using namespace std;

std::string namen[20]; // initialisieren eines Array aller Namen der Vereinsmitglieder
std::string warteliste[10]; // initialisieren eines Array der überschüssigen gebuchten Namen
static std::string namensliste[20]; // initialisieren eines Array aller gebuchten Namen
int anzahlAnmeldungen=0; // Zähler der Anmeldungen

class Boot //Deklaration der Klasse Boot
{
  public:  
  int anzahlBesatzung; // Anzahl der Besatzung
  std::string besatzungsliste[]; //initialisieren eines Array der Namen von Besatzung
  double Kosten; //Kosten für Bootcharter
    Boot(int anzahl, std::string namensliste[], double kostenBoot); //Oberklassenkonstrukter der Klasse Boot mit 3 Übergabewerten
};
    Boot::Boot(int anzahl, std::string namensliste[], double kostenBoot) //Konstruktor-Methode
    {
     anzahlBesatzung=anzahl+1;    // 
     for(int i=0; i&lt;=20; i++) (besatzungsliste[i]=namensliste[i]);
     Kosten=kostenBoot;
    }   
int ausgabe(double bootKosten, int anzahl) // Ausgabefunktion mit Rückgabewert
  {
     cout&lt;&lt;&quot;Kosten pro Person: (bootkosten/anzahl)&quot;;
     return int(bootKosten/anzahl); 
  } 

void menue(void)         // Menue-Funktion für diverse Wünsche
{
         int *zeiger=0;      // Pointer um die Arrays bearbeiten
         char tasteneingabe='0'; // Variable für die Tasteneingabe
         std::string tmp;  //  String-Variable zur Ablage des Namen um ein String-Array zu durchsuchen
         do{                                       // Ausgabe des Menues
         cout&lt;&lt;&quot; 1 Anzeige der bisher angemeldeten Personen. &quot;&lt;&lt;endl;
         cout&lt;&lt;&quot; 2 Anmeldung zur Segelwoche. &quot;&lt;&lt;endl;
         cout&lt;&lt;&quot; 3 Abmeldung. &quot;&lt;&lt;endl;
         cout&lt;&lt;&quot; 4 Programmende. &quot;&lt;&lt;endl;
         cout&lt;&lt;&quot; Bitte waehlen sie einem Menuepunkt ueber die Tastaturziffer 1 bis 4 ! &quot;&lt;&lt;endl;
         cin&gt;&gt;tasteneingabe; // Eingabe über Tastatur 
         if(tasteneingabe=='1')
         {
                               for(int i=0; i&lt;anzahlAnmeldungen+2; i++)
                               {
                               cout&lt;&lt;namensliste[i]&lt;&lt;endl;
                               }                      
         }
         else if(tasteneingabe=='2') 
              {
              anzahlAnmeldungen++;
              cout&lt;&lt;&quot;Bitte ihren Namen eingeben, um diesen der Anmeldeliste hinzuzufügen. \n&quot;;
              cin&gt;&gt;namensliste[anzahlAnmeldungen];
              }
         else if(tasteneingabe=='3') 
              {
              cout&lt;&lt;&quot;Bitte ihren Namen eingeben, um diesen der Anmeldeliste abzumelden. \n&quot;;
              cin&gt;&gt;tmp;
              for(int i=0; i&lt;=anzahlAnmeldungen; i++)
               {
                      if(tmp == namensliste[i])
                        {
                                              namensliste[i]=&quot;NULL&quot;;
                                              cout&lt;&lt;&quot;Ihr Name wurde von der Anmeldeliste gelöscht \n&quot;;
                                              anzahlAnmeldungen--;
                                              break;
                        }
                      else cout&lt;&lt;&quot;Name nicht gefunden! \n&quot;;
               }

              }
         else if(tasteneingabe=='4') break;
         }
         while(tasteneingabe !='0');
}

int main(int argc, char *argv[])
{
    menue();
    if (anzahlAnmeldungen&gt;=4 &amp;&amp; anzahlAnmeldungen&lt;6) Boot Boot_4(anzahlAnmeldungen, namensliste, 1000); // Definition und Initialisierung der Unterklasse Boot_4
    else if (anzahlAnmeldungen&gt;=6 &amp;&amp; anzahlAnmeldungen&lt;8) Boot Boot_6(anzahlAnmeldungen, namensliste, 1300); // Definition und Initialisierung der Unterklasse Boot_6
    else if (anzahlAnmeldungen&gt;=7 &amp;&amp; anzahlAnmeldungen&lt;8) Boot Boot_8(anzahlAnmeldungen, namensliste, 1500); // Definition und Initialisierung der Unterklasse Boot_8

    system(&quot;PAUSE&quot;);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2511744</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2511744</guid><dc:creator><![CDATA[Julia_w]]></dc:creator><pubDate>Sun, 16 Oct 2016 13:40:18 GMT</pubDate></item><item><title><![CDATA[Reply to fehlerhafter Konstruktur einer Klasse on Sun, 16 Oct 2016 14:13:33 GMT]]></title><description><![CDATA[<p>Das als Member geht natürlich nicht</p>
<pre><code>std::string besatzungsliste[];
</code></pre>
<p>Da muss eine zur Compilezeit konstante Zahl stehen. Ich kann mich nur wiederholen: benutze std::vector.</p>
<p>Ansonsten: zeige immer die aktuelle Fehlermeldung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2511749</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2511749</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Sun, 16 Oct 2016 14:13:33 GMT</pubDate></item><item><title><![CDATA[Reply to fehlerhafter Konstruktur einer Klasse on Sun, 16 Oct 2016 15:59:08 GMT]]></title><description><![CDATA[<p>wenn ich std::vector eingebe, bekomme ich</p>
<pre><code>main.cpp:16: error: using-declaration for non-member at class scope

main.cpp:16: error: expected `;' before &quot;string&quot;
</code></pre>
<p>als Fehlermeldung<br />
habe es jetzt so gemacht:</p>
<pre><code>#include &lt;cstdlib&gt;
#include &lt;iostream&gt;
#include &lt;string.h&gt;
#include &lt;vector&gt;
using namespace std;

std::string namen[20]; // initialisieren eines Array aller Namen der Vereinsmitglieder
std::string warteliste[10]; // initialisieren eines Array der überschüssigen gebuchten Namen
static std::string namensliste[20]; // initialisieren eines Array aller gebuchten Namen
int anzahlAnmeldungen=0; // Zähler der Anmeldungen

class Boot //Deklaration der Klasse Boot
{
  public:  
  int anzahlBesatzung; // Anzahl der Besatzung
  string besatzungsliste[]; //initialisieren eines Array der Namen von Besatzung
  double Kosten; //Kosten für Bootcharter
    Boot(int anzahl, string namensliste[], double kostenBoot) //Oberklassenkonstrukter der Klasse Boot mit 3 Übergabewerten

    //Boot(int anzahl, string namensliste[], double kostenBoot):anzahlBesatzung(anzahl), besatzungsliste(namensliste), Kosten(kostenBoot) //Konstruktor-Methode
    {
     anzahlBesatzung=anzahl+1;    // 
     for(int i=0; i&lt;=20; i++) (besatzungsliste[i]=namensliste[i]);
     Kosten=kostenBoot;
     cout&lt;&lt;&quot;Besatzungsanzahl: Charterkosten: Besatzungliste \n&quot;&lt;&lt; anzahlBesatzung &lt;&lt; Kosten &lt;&lt;endl; 
      for(int i=0; i&lt;=20; i++) 
      {
             besatzungsliste[i]=namensliste[i];
             cout&lt;&lt;besatzungsliste&lt;&lt;endl;
      } 
    } 
 };   

int ausgabe(double bootKosten, int anzahl) // Ausgabefunktion mit Rückgabewert
  {

     return int(bootKosten/anzahl); 
  } 

void menue(void)         // Menue-Funktion für diverse Wünsche
{
         int *zeiger=0;      // Pointer um die Arrays bearbeiten
         char tasteneingabe='0'; // Variable für die Tasteneingabe
         std::string tmp;  //  String-Variable zur Ablage des Namen um ein String-Array zu durchsuchen
         do{                                       // Ausgabe des Menues
         cout&lt;&lt;&quot; 1 Anzeige der bisher angemeldeten Personen. &quot;&lt;&lt;endl;
         cout&lt;&lt;&quot; 2 Anmeldung zur Segelwoche. &quot;&lt;&lt;endl;
         cout&lt;&lt;&quot; 3 Abmeldung. &quot;&lt;&lt;endl;
         cout&lt;&lt;&quot; 4 Programmende. &quot;&lt;&lt;endl;
         cout&lt;&lt;&quot; Bitte waehlen sie einem Menuepunkt ueber die Tastaturziffer 1 bis 4 ! &quot;&lt;&lt;endl;
         cin&gt;&gt;tasteneingabe; // Eingabe über Tastatur 
         if(tasteneingabe=='1')
         {
                               for(int i=0; i&lt;anzahlAnmeldungen+2; i++)
                               {
                               cout&lt;&lt;namensliste[i]&lt;&lt;endl;
                               }                      
         }
         else if(tasteneingabe=='2') 
              {
              anzahlAnmeldungen++;
              cout&lt;&lt;&quot;Bitte ihren Namen eingeben, um diesen der Anmeldeliste hinzuzufügen. \n&quot;;
              cin&gt;&gt;namensliste[anzahlAnmeldungen];
              }
         else if(tasteneingabe=='3') 
              {
              cout&lt;&lt;&quot;Bitte ihren Namen eingeben, um diesen der Anmeldeliste abzumelden. \n&quot;;
              cin&gt;&gt;tmp;
              for(int i=0; i&lt;=anzahlAnmeldungen; i++)
               {
                      if(tmp == namensliste[i])
                        {
                                              namensliste[i]=&quot;NULL&quot;;
                                              cout&lt;&lt;&quot;Ihr Name wurde von der Anmeldeliste gelöscht \n&quot;;
                                              anzahlAnmeldungen--;
                                              break;
                        }
                      else cout&lt;&lt;&quot;Name nicht gefunden! \n&quot;;
               }

              }
         else if(tasteneingabe=='4') break;
         }
         while(tasteneingabe !='4');
}

int main(int argc, char *argv[])
{
    menue();
    if (anzahlAnmeldungen&gt;=4 &amp;&amp; anzahlAnmeldungen&lt;6) Boot Boot_4(anzahlAnmeldungen, namensliste, 1000); // Definition und Initialisierung der Unterklasse Boot_4
    else if (anzahlAnmeldungen&gt;=6 &amp;&amp; anzahlAnmeldungen&lt;8) Boot Boot_6(anzahlAnmeldungen, namensliste, 1300); // Definition und Initialisierung der Unterklasse Boot_6
    else if (anzahlAnmeldungen&gt;=7 &amp;&amp; anzahlAnmeldungen&lt;8) Boot Boot_8(anzahlAnmeldungen, namensliste, 1500); // Definition und Initialisierung der Unterklasse Boot_8
    system(&quot;PAUSE&quot;);
}
</code></pre>
<p>wenn ich 7 Namen eingegeben habe, ist ja <strong>anzahlAnmeldungen</strong> &gt;=4 erfüllt und der Konstruktor sollte <strong>Boot_4</strong> oder <strong>Boot_6</strong> anlegen. Leider kommt der &quot; <strong>cout&lt;&lt;&quot;Besatzungsanzahl: Charterkosten: Besatzungliste \n&quot;&lt;&lt; anzahlBesatzung &lt;&lt; Kosten &lt;&lt;endl; &quot;</strong> nicht als ausgabe. <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/2511760</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2511760</guid><dc:creator><![CDATA[Julia_w]]></dc:creator><pubDate>Sun, 16 Oct 2016 15:59:08 GMT</pubDate></item><item><title><![CDATA[Reply to fehlerhafter Konstruktur einer Klasse on Sun, 16 Oct 2016 16:45:47 GMT]]></title><description><![CDATA[<p>Nutze wirklich std::vector, wie manni66 schon schrieb!</p>
<p>Probleme, die du jetzt hast:<br />
- Problem 1: es stehen viele &quot;magische Konstanten&quot; (also sowas wie die &quot;20&quot;) im Programm, also zum Beispiel bei</p>
<pre><code>static std::string namensliste[20];
// und dann später
for(int i=0; i&lt;=20; i++) {
  besatzungsliste[i]=namensliste[i];
  ...
</code></pre>
<p>Nun überleg mal, wie viele Strings du hast und wie weit die Schleife geht (von 0 bis 20 sind 21 Elemente).<br />
Daher: nimm einen std::vector&lt;string&gt; für deine Listen. Dann brauchst du auch die Größe nicht selbst in einer zusätzlichen Variablen zu speichern, sondern der vector kennst seine Größe selbst.</p>
<p>- Problem 2: Globale Variablen. Vermeide sie wie die Pest! Insbesondere sollte deine Funktion menue nicht globale Variablen ändern, sondern einfach einen vector&lt;string&gt; der eingegebenen Namen zurückgeben.</p>
<p>- Problem 3: merkwürdige Kommentare.<br />
a) so etwas wie &quot;class Boot&quot; brauchst du nicht mit &quot;//Deklaration der Klasse Boot&quot; kommentieren, das ist aus &quot;class Boot&quot; schon sofort klar. Schreib besser einen Kommentar dazu, was die Klasse tun soll. (am besten mehrzeilig vor die Zeile mit &quot;class&quot;)<br />
b) was meinst du mit &quot;Unterklasse&quot;? Du hast hier keine Vererbung. Du meinst wohl &quot;Objekte&quot;? Ich meine das hier:</p>
<blockquote>
<pre><code>if (anzahlAnmeldungen&gt;=4 &amp;&amp; anzahlAnmeldungen&lt;6) Boot Boot_4(anzahlAnmeldungen, namensliste, 1000); // Definition und Initialisierung der Unterklasse Boot_4
    else if (anzahlAnmeldungen&gt;=6 &amp;&amp; anzahlAnmeldungen&lt;8) Boot Boot_6(anzahlAnmeldungen, namensliste, 1300); // Definition und Initialisierung der Unterklasse Boot_6
    else if (anzahlAnmeldungen&gt;=7 &amp;&amp; anzahlAnmeldungen&lt;8) Boot Boot_8(anzahlAnmeldungen, namensliste, 1500); // Definition und Initialisierung der Unterklasse Boot_8
</code></pre>
</blockquote>
<p>Bei anzahlAnmeldungen==7 ist das noch zwischen &gt;=6 und &lt;8 und geht daher nicht in &gt;=7 und &lt;8. Außerdem ist es komisch, im Boot-Konstruktor schon die Ausgabe zu machen und das Boot-Objekt für einmal kurz zu konstruieren, ohne eine Memberfunktion aufzurufen (nur um den Konstruktor zu haben).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2511761</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2511761</guid><dc:creator><![CDATA[wob]]></dc:creator><pubDate>Sun, 16 Oct 2016 16:45:47 GMT</pubDate></item><item><title><![CDATA[Reply to fehlerhafter Konstruktur einer Klasse on Sun, 16 Oct 2016 19:08:19 GMT]]></title><description><![CDATA[<pre><code>#include &lt;cstdlib&gt;
#include &lt;iostream&gt;
#include &lt;string.h&gt;
#include &lt;vector&gt;
using namespace std;

std::vector&lt;std::string&gt; namen; // initialisieren eines Array aller Namen der Vereinsmitglieder
std::vector&lt;std::string&gt; warteliste; // initialisieren eines Array der überschüssigen gebuchten Namen
std::vector&lt;std::string&gt; namensliste; // initialisieren eines Array aller gebuchten Namen
int anzahlAnmeldungen=0; // Zähler der Anmeldungen

class Boot //Deklaration der Klasse Boot
{
  public:  
  int anzahlBesatzung; // Anzahl der Besatzung
  std::vector&lt;std::string&gt; besatzungsliste; //initialisieren eines Array der Namen von Besatzung
  double Kosten; //Kosten für Bootcharter
    Boot(int anzahl, string namensliste[], double kostenBoot) //Konstrukter der Klasse Boot mit 3 Übergabewerten

    //Boot(int anzahl, string namensliste[], double kostenBoot):anzahlBesatzung(anzahl), besatzungsliste(namensliste), Kosten(kostenBoot) //Konstruktor-Methode
    {
     anzahlBesatzung=anzahl+1;    // 
     for(int i=0; i&lt;=besatzungsliste.size(); i++) (besatzungsliste[i]=namensliste[i]);
     Kosten=kostenBoot;
     cout&lt;&lt;&quot;Besatzungsanzahl: Charterkosten: Besatzungliste \n&quot;&lt;&lt; anzahlBesatzung &lt;&lt; Kosten &lt;&lt;endl; 
      for(int i=0; i&lt;besatzungsliste.size(); i++) 
      {
             besatzungsliste[i]=namensliste[i];
             cout&lt;&lt;besatzungsliste[i]&lt;&lt;endl;
      } 
    } 
 };   

int ausgabe(double bootKosten, int anzahl) // Ausgabefunktion mit Rückgabewert
  {

     return int(bootKosten/anzahl); 
  } 

void menue(void)         // Menue-Funktion für diverse Wünsche
{
         char tasteneingabe='0'; // Variable für die Tasteneingabe
         std::string tmp;  //  String-Variable zur Ablage des Namen um ein String-Array zu durchsuchen
         do{                                       // Ausgabe des Menues
         cout&lt;&lt;&quot; 1 Anzeige der bisher angemeldeten Personen. &quot;&lt;&lt;endl;
         cout&lt;&lt;&quot; 2 Anmeldung zur Segelwoche. &quot;&lt;&lt;endl;
         cout&lt;&lt;&quot; 3 Abmeldung. &quot;&lt;&lt;endl;
         cout&lt;&lt;&quot; 4 Programmende. &quot;&lt;&lt;endl;
         cout&lt;&lt;&quot; Bitte waehlen sie einem Menuepunkt ueber die Tastaturziffer 1 bis 4 ! &quot;&lt;&lt;endl;
         cin&gt;&gt;tasteneingabe; // Eingabe über Tastatur 
         if(tasteneingabe=='1')
         {
                               for(int i=0; i&lt;anzahlAnmeldungen; i++)
                               {
                               cout&lt;&lt;namensliste.at(i)&lt;&lt;endl;
                               }                      
         }
         else if(tasteneingabe=='2') 
              {
             anzahlAnmeldungen++;
             cout&lt;&lt;&quot;Bitte ihren Namen eingeben, um diesen der Anmeldeliste hinzuzufügen. \n&quot;;
             cin &gt;&gt; tmp; //zwischenspeichern der Tastatureingabe
             namensliste.push_back(tmp); //zuweisen der Zwischenspeicherung an Vector
             }
         else if(tasteneingabe=='3') 
              {
              cout&lt;&lt;&quot;Bitte ihren Namen eingeben, um diesen der Anmeldeliste abzumelden. \n&quot;;
              cin&gt;&gt;tmp;
              for(int i=0; i&lt;=anzahlAnmeldungen; i++)
               {
                      if(tmp == namensliste[i])
                        {
                                              namensliste[i]=&quot;NULL&quot;;
                                              cout&lt;&lt;&quot;Ihr Name wurde von der Anmeldeliste gelöscht \n&quot;;
                                              anzahlAnmeldungen--;
                                              break;
                        }
                      else cout&lt;&lt;&quot;Name nicht gefunden! \n&quot;;
               }

              }
         else if(tasteneingabe=='4') break;
         }
         while(tasteneingabe !='4');
}

int main(int argc, char *argv[])
{
    menue();
    if (anzahlAnmeldungen&gt;=4 &amp;&amp; anzahlAnmeldungen&lt;6) Boot Boot_4(anzahlAnmeldungen, namensliste, 1000); // Definition und Initialisierung der Object Boot_4
    //else if (anzahlAnmeldungen&gt;=6 &amp;&amp; anzahlAnmeldungen&lt;8) Boot Boot_6(anzahlAnmeldungen, namensliste, 1300); // Definition und Initialisierung der Object Boot_6
    //else if (anzahlAnmeldungen&gt;=7 &amp;&amp; anzahlAnmeldungen&lt;8) Boot Boot_8(anzahlAnmeldungen, namensliste, 1500); // Definition und Initialisierung der Object Boot_8
    system(&quot;PAUSE&quot;);
}
</code></pre>
<p>jetzt bekomme ich folgende Fehlermedung:</p>
<pre><code>main.cpp: In function `int main(int, char**)':
main.cpp:91: error: no matching function for call to `Boot::Boot(int&amp;, std::vector&lt;std::string, std::allocator&lt;std::string&gt; &gt;&amp;, int)'
main.cpp:13: note: candidates are: Boot::Boot(const Boot&amp;)
main.cpp:21: note:                 Boot::Boot(int, std::string*, double)
</code></pre>
<p>mir würde es schon reichen, wenn aus der class Boot das <strong>cout&lt;&lt;besatzungsliste[i]&lt;&lt;endl;</strong> ausgefürht wird.<br />
könnt ihr mir den Code dahin gehend umschreiben&quot; <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2511773</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2511773</guid><dc:creator><![CDATA[Julia_w]]></dc:creator><pubDate>Sun, 16 Oct 2016 19:08:19 GMT</pubDate></item><item><title><![CDATA[Reply to fehlerhafter Konstruktur einer Klasse on Sun, 16 Oct 2016 19:21:55 GMT]]></title><description><![CDATA[<p>Fehlermeldung wurden hiermit beseitigt:</p>
<pre><code>#include &lt;cstdlib&gt;
#include &lt;iostream&gt;
#include &lt;string.h&gt;
#include &lt;vector&gt;
using namespace std;

std::vector&lt;std::string&gt; namen; // initialisieren eines Array aller Namen der Vereinsmitglieder
std::vector&lt;std::string&gt; warteliste; // initialisieren eines Array der überschüssigen gebuchten Namen
std::vector&lt;std::string&gt; namensliste; // initialisieren eines Array aller gebuchten Namen
int anzahlAnmeldungen=0; // Zähler der Anmeldungen

class Boot //Deklaration der Klasse Boot
{
  public:  
  int anzahlBesatzung; // Anzahl der Besatzung
  std::vector&lt;std::string&gt; besatzungsliste; //initialisieren eines Array der Namen von Besatzung
  double Kosten; //Kosten für Bootcharter
    Boot(int anzahl, std::vector&lt;std::string&gt; namensliste, double kostenBoot) //Konstrukter der Klasse Boot mit 3 Übergabewerten

    //Boot(int anzahl, string namensliste[], double kostenBoot):anzahlBesatzung(anzahl), besatzungsliste(namensliste), Kosten(kostenBoot) //Konstruktor-Methode
    {
     anzahlBesatzung=anzahl+1;    // 
     for(int i=0; i&lt;=besatzungsliste.size(); i++) (besatzungsliste[i]=namensliste[i]);
     Kosten=kostenBoot;
     cout&lt;&lt;&quot;Besatzungsanzahl: Charterkosten: Besatzungliste \n&quot;&lt;&lt; anzahlBesatzung &lt;&lt; Kosten &lt;&lt;endl; 
      for(int i=0; i&lt;besatzungsliste.size(); i++) 
      {
             besatzungsliste[i]=namensliste[i];
             cout&lt;&lt;besatzungsliste[i]&lt;&lt;endl;
      } 
    } 
 };   

int ausgabe(double bootKosten, int anzahl) // Ausgabefunktion mit Rückgabewert
  {

     return int(bootKosten/anzahl); 
  } 

void menue(void)         // Menue-Funktion für diverse Wünsche
{
         char tasteneingabe='0'; // Variable für die Tasteneingabe
         std::string tmp;  //  String-Variable zur Ablage des Namen um ein String-Array zu durchsuchen
         do{                                       // Ausgabe des Menues
         cout&lt;&lt;&quot; 1 Anzeige der bisher angemeldeten Personen. &quot;&lt;&lt;endl;
         cout&lt;&lt;&quot; 2 Anmeldung zur Segelwoche. &quot;&lt;&lt;endl;
         cout&lt;&lt;&quot; 3 Abmeldung. &quot;&lt;&lt;endl;
         cout&lt;&lt;&quot; 4 Programmende. &quot;&lt;&lt;endl;
         cout&lt;&lt;&quot; Bitte waehlen sie einem Menuepunkt ueber die Tastaturziffer 1 bis 4 ! &quot;&lt;&lt;endl;
         cin&gt;&gt;tasteneingabe; // Eingabe über Tastatur 
         if(tasteneingabe=='1')
         {
                               for(int i=0; i&lt;anzahlAnmeldungen; i++)
                               {
                               cout&lt;&lt;namensliste.at(i)&lt;&lt;endl;
                               }                      
         }
         else if(tasteneingabe=='2') 
              {
             anzahlAnmeldungen++;
             cout&lt;&lt;&quot;Bitte ihren Namen eingeben, um diesen der Anmeldeliste hinzuzufügen. \n&quot;;
             cin &gt;&gt; tmp; //zwischenspeichern der Tastatureingabe
             namensliste.push_back(tmp); //zuweisen der Zwischenspeicherung an Vector
             }
         else if(tasteneingabe=='3') 
              {
              cout&lt;&lt;&quot;Bitte ihren Namen eingeben, um diesen der Anmeldeliste abzumelden. \n&quot;;
              cin&gt;&gt;tmp;
              for(int i=0; i&lt;=anzahlAnmeldungen; i++)
               {
                      if(tmp == namensliste[i])
                        {
                                              namensliste[i]=&quot;NULL&quot;;
                                              cout&lt;&lt;&quot;Ihr Name wurde von der Anmeldeliste gelöscht \n&quot;;
                                              anzahlAnmeldungen--;
                                              break;
                        }
                      else cout&lt;&lt;&quot;Name nicht gefunden! \n&quot;;
               }

              }
         else if(tasteneingabe=='4') break;
         }
         while(tasteneingabe !='4');
}

int main(int argc, char *argv[])
{
    menue();
    if (anzahlAnmeldungen&gt;=4 &amp;&amp; anzahlAnmeldungen&lt;6) Boot Boot_4(anzahlAnmeldungen, namensliste, 1000); // Definition und Initialisierung der Object Boot_4
    //else if (anzahlAnmeldungen&gt;=6 &amp;&amp; anzahlAnmeldungen&lt;8) Boot Boot_6(anzahlAnmeldungen, namensliste, 1300); // Definition und Initialisierung der Object Boot_6
    //else if (anzahlAnmeldungen&gt;=7 &amp;&amp; anzahlAnmeldungen&lt;8) Boot Boot_8(anzahlAnmeldungen, namensliste, 1500); // Definition und Initialisierung der Object Boot_8
    system(&quot;PAUSE&quot;);
}
</code></pre>
<p>leider funzt die class nzw. der Konstrukter immer noch nicht. würde mich über Hilfe freuen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2511775</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2511775</guid><dc:creator><![CDATA[Julia_w]]></dc:creator><pubDate>Sun, 16 Oct 2016 19:21:55 GMT</pubDate></item><item><title><![CDATA[Reply to fehlerhafter Konstruktur einer Klasse on Sun, 16 Oct 2016 20:27:42 GMT]]></title><description><![CDATA[<p>Dein Boot-Konstruktor ist falsch.</p>
<blockquote>
<pre><code>for(int i=0; i&lt;=besatzungsliste.size(); i++) (besatzungsliste[i]=namensliste[i]);
</code></pre>
</blockquote>
<p>Die besatzungsliste ist noch leer, du kannst nicht einfach was reinschreiben, ohne vorher Platz zu haben.</p>
<p>Aber mit vector geht das doch viel einfacher, schreib:</p>
<pre><code>besatzungsliste = namensliste;
</code></pre>
<p>Das kopiert gleich den ganzen vector. Damit läuft es dann schon mal.</p>
<p>Ich würde jetzt mal anfangen, das Boot aufzuräumen:</p>
<pre><code>// Ein Boot mit Besatzung.
class Boot {
  public:
    vector&lt;string&gt; besatzungsliste;
    double Kosten; // Kosten für Bootcharter
    Boot(const vector&lt;string&gt; &amp;namensliste, double kostenBoot)
        : besatzungsliste(namensliste), Kosten(kostenBoot) {
        cout &lt;&lt; &quot;Besatzungsanzahl: Charterkosten: Besatzungliste \n&quot;
             &lt;&lt; namensliste.size() &lt;&lt; &quot;:&quot; &lt;&lt; Kosten &lt;&lt; endl;
        for (const auto &amp;name : besatzungsliste) {
            cout &lt;&lt; name &lt;&lt; endl;
        }
    }
};
</code></pre>
<p>Aufräumschritte danach:<br />
- Ausgabe aus Konstruktor raus und in separate Funktion rein<br />
- irgendwas mit den Kosten anfangen...</p>
<p>Weiterhin: du löscht aktuell nicht, sondern ersetzt die Namen nur duch &quot;NULL&quot;. Aus einem vector löschen kannst du so:</p>
<pre><code>cout &lt;&lt; &quot;Bitte ihren Namen eingeben, um diesen der Anmeldeliste abzumelden.\n&quot;;
cin &gt;&gt; tmp;
auto pos = find(begin(namensliste), end(namensliste), tmp);
if (pos == end(namensliste)) {
    cout &lt;&lt; &quot;Name nicht gefunden! \n&quot;;
} else {
    namensliste.erase(pos);
    cout &lt;&lt; &quot;Ihr Name wurde von der Anmeldeliste gelöscht \n&quot;;
}
</code></pre>
<p>(für std::find musst du &lt;algorithm&gt; includen)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2511778</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2511778</guid><dc:creator><![CDATA[wob]]></dc:creator><pubDate>Sun, 16 Oct 2016 20:27:42 GMT</pubDate></item><item><title><![CDATA[Reply to fehlerhafter Konstruktur einer Klasse on Sun, 16 Oct 2016 21:17:52 GMT]]></title><description><![CDATA[<p>danke dir <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2511784</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2511784</guid><dc:creator><![CDATA[Julia_w]]></dc:creator><pubDate>Sun, 16 Oct 2016 21:17:52 GMT</pubDate></item><item><title><![CDATA[Reply to fehlerhafter Konstruktur einer Klasse on Tue, 18 Oct 2016 18:32:07 GMT]]></title><description><![CDATA[<p>ich habe das Programm etwas optimiert.<br />
Es funzt so weit, wenn ich nicht</p>
<pre><code class="language-cpp">auto pos = std::find(begin(namensliste), end(namensliste), tmp);
              if (pos == end(namensliste)) 
              {
              cout &lt;&lt; &quot;Name nicht gefunden! \n&quot;;
              } 
              else 
              {
              namensliste.erase(pos);
              cout &lt;&lt; &quot;Ihr Name wurde von der Anmeldeliste gelöscht \n&quot;;
              }
</code></pre>
<p>... verwende. Was ist daran falsch?</p>
<pre><code>Fehlermeldung: main.cpp:74: error: ISO C++ forbids declaration of `pos' with no type

main.cpp:74: error: `begin' undeclared (first use this function)

main.cpp:74: error: (Each undeclared identifier is reported only once for each function it appears in.)

main.cpp:74: error: `end' undeclared (first use this function)

main.cpp:81: error: no matching function for call to `std::vector&lt;std::string, std::allocator&lt;std::string&gt; &gt;::erase(int&amp;)'
</code></pre>
<pre><code>#include &lt;cstdlib&gt;
#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;algorithm&gt;
#include &lt;vector&gt;
#include &lt;iterator&gt;

using namespace std;

std::vector&lt;std::string&gt; namen; // initialisieren eines Array aller Namen der Vereinsmitglieder
std::vector&lt;std::string&gt; warteliste; // initialisieren eines Array der überschüssigen gebuchten Namen
std::vector&lt;std::string&gt; namensliste; // initialisieren eines Array aller gebuchten Namen
int anzahlAnmeldungen=0; // Zähler der Anmeldungen

class Boot //Deklaration der Klasse Boot
{
  public:  
  int anzahlBesatzung; // Anzahl der Besatzung
  vector&lt;string&gt; besatzungsliste; //initialisieren eines Array der Namen von Besatzung
  double Kosten; //Kosten für Bootcharter
    Boot(const vector&lt;string&gt; &amp;namensliste, double kostenBoot): besatzungsliste(namensliste), Kosten(kostenBoot) //Konstrukter der Klasse Boot mit 2 Übergabewerten
    {      
     for(int i=0; i&lt;=besatzungsliste.size(); i++) (besatzungsliste=namensliste); //da besatzungsliste noch leer ist, mit Vector statt Array arbeiten
     Kosten=kostenBoot;
     anzahlBesatzung=namensliste.size();
     ausgabe();
   }
  void ausgabe() // Ausgabefunktion
  {
     printf (&quot;\n Besatzungsanzahl: Charterkosten:  \n&quot;);
     printf (&quot;%d %20.2f \n&quot;, besatzungsliste.size(), Kosten  ); 
     cout&lt;&lt;&quot;______________________________________________________________________________&quot;&lt;&lt;endl;
     cout&lt;&lt;&quot;Besatzungliste :\n&quot;;
     for(int i=0; i&lt;besatzungsliste.size(); i++)
     {
     cout&lt;&lt;besatzungsliste.at(i)&lt;&lt;endl; 
     }  
     cout&lt;&lt;&quot;        Kosten pro Teilnehmer: \n&quot;&lt;&lt; (Kosten/anzahlBesatzung)&lt;&lt;endl; 
  } 
 };   

void menue(void)         // Menue-Funktion für diverse Wünsche
{
         char tasteneingabe='0'; // Variable für die Tasteneingabe
         string tmp;  //  String-Variable zur Ablage des Namen um ein String-Array zu durchsuchen
         do{                                       // Ausgabe des Menues
         cout&lt;&lt;&quot; 1 Anzeige der bisher angemeldeten Personen. &quot;&lt;&lt;endl;
         cout&lt;&lt;&quot; 2 Anmeldung zur Segelwoche. &quot;&lt;&lt;endl;
         cout&lt;&lt;&quot; 3 Abmeldung. &quot;&lt;&lt;endl;
         cout&lt;&lt;&quot; 4 Programmende. &quot;&lt;&lt;endl;
         cout&lt;&lt;&quot; Bitte waehlen sie einem Menuepunkt ueber die Tastaturziffer 1 bis 4 ! &quot;&lt;&lt;endl;
         cin&gt;&gt;tasteneingabe; // Eingabe über Tastatur 
         if(tasteneingabe=='1')
         {
                               for(int i=0; i&lt;anzahlAnmeldungen; i++)
                               {
                               cout&lt;&lt;namensliste.at(i)&lt;&lt;endl;
                               }                      
         }
         else if(tasteneingabe=='2') 
              {
             anzahlAnmeldungen++;
             cout&lt;&lt;&quot;Bitte ihren Namen eingeben, um diesen der Anmeldeliste hinzuzufügen. \n&quot;;
             cin &gt;&gt; tmp; //zwischenspeichern der Tastatureingabe
             namensliste.push_back(tmp); //zuweisen der Zwischenspeicherung an Vector
             }
         else if(tasteneingabe=='3') 
         {
         cout &lt;&lt; &quot;Bitte ihren Namen eingeben, um diesen der Anmeldeliste abzumelden.\n&quot;;
         cin &gt;&gt; tmp;
         auto pos = std::find(begin(namensliste), end(namensliste), tmp);
              if (pos == end(namensliste)) 
              {
              cout &lt;&lt; &quot;Name nicht gefunden! \n&quot;;
              } 
              else 
              {
              namensliste.erase(pos);
              cout &lt;&lt; &quot;Ihr Name wurde von der Anmeldeliste gelöscht \n&quot;;
              }
         }
         else if(tasteneingabe=='4') break;
         }
         while(tasteneingabe !='4');
}

int main(int argc, char *argv[])
{
    menue();
    if (anzahlAnmeldungen&gt;=4 &amp;&amp; anzahlAnmeldungen&lt;6) Boot Boot_4(namensliste, 1000); // Definition und Initialisierung der Object Boot_4
    else if (anzahlAnmeldungen&gt;=6 &amp;&amp; anzahlAnmeldungen&lt;8) Boot Boot_6(namensliste, 1300); // Definition und Initialisierung der Object Boot_6
    else if (anzahlAnmeldungen&gt;=7 &amp;&amp; anzahlAnmeldungen&lt;8) Boot Boot_8(namensliste, 1500); // Definition und Initialisierung der Object Boot_8

    system(&quot;PAUSE&quot;);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2512017</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2512017</guid><dc:creator><![CDATA[Julia_w]]></dc:creator><pubDate>Tue, 18 Oct 2016 18:32:07 GMT</pubDate></item><item><title><![CDATA[Reply to fehlerhafter Konstruktur einer Klasse on Tue, 18 Oct 2016 19:05:15 GMT]]></title><description><![CDATA[<p>Julia_w schrieb:</p>
<blockquote>
<p>... verwende. Was ist daran falsch?</p>
<pre><code>Fehlermeldung: main.cpp:74: error: ISO C++ forbids declaration of `pos' with no type

main.cpp:74: error: `begin' undeclared (first use this function)

main.cpp:74: error: (Each undeclared identifier is reported only once for each function it appears in.)

main.cpp:74: error: `end' undeclared (first use this function)

main.cpp:81: error: no matching function for call to `std::vector&lt;std::string, std::allocator&lt;std::string&gt; &gt;::erase(int&amp;)'
</code></pre>
</blockquote>
<p>Der Compiler scheint kein C++-11 zu verstehen. Welchen benutzt du? Gegebenenfalls C++-11 einschalten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2512025</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2512025</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Tue, 18 Oct 2016 19:05:15 GMT</pubDate></item></channel></rss>