<?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[Fehlerbehebung!?!]]></title><description><![CDATA[<p>Frohe Weihnachten!<br />
eine kleine Frage zu unten genanntem Code.<br />
warum zeigt mir der Compiler an dass er eine Initialisierung vor dem const erwartet? bzw. wenn ich die Zeile rauskommentiere dann fragt er nach einem Initializer vor dem class? Da ich mal wieder selber auf die Lösung kommen will kopier ich hier nicht die anderen Dateien rein wenn Ihr die natürlich braucht damit der Fehler überhaupt zu finden ist dann stelle ich sie gerne noch mit rein.</p>
<p>Kurze Erklärung zum Verständniss:<br />
die Klasse Reisenlist dient nur dazu mehrere Reisen (der Klasse &quot;Reisen&quot;) besser zu verwalten zu können.</p>
<pre><code>#define REISENLIST_H
#include &quot;reisen.h&quot;

const int MAXSIZE=100; //um die Zeile geht es

class Reisenlist
{
private:
    Reisen myReiselist[MAXSIZE];
    int mySize;
public:
    Reisenlist();
    void addReisen(const Reisen&amp; reisen);
    void readFile(const std::string filename);
    void show();
    void writeFile(const std::string filename);

};

#endif // REISENLIST_H
</code></pre>
<pre><code>error: expected initializer before 'int'
 const int MAXSIZE=100;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/330184/fehlerbehebung</link><generator>RSS for Node</generator><lastBuildDate>Fri, 03 Jul 2026 11:35:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/330184.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 26 Dec 2014 16:25:48 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Fehlerbehebung!?! on Fri, 02 Jan 2015 10:11:43 GMT]]></title><description><![CDATA[<p>Frohe Weihnachten!<br />
eine kleine Frage zu unten genanntem Code.<br />
warum zeigt mir der Compiler an dass er eine Initialisierung vor dem const erwartet? bzw. wenn ich die Zeile rauskommentiere dann fragt er nach einem Initializer vor dem class? Da ich mal wieder selber auf die Lösung kommen will kopier ich hier nicht die anderen Dateien rein wenn Ihr die natürlich braucht damit der Fehler überhaupt zu finden ist dann stelle ich sie gerne noch mit rein.</p>
<p>Kurze Erklärung zum Verständniss:<br />
die Klasse Reisenlist dient nur dazu mehrere Reisen (der Klasse &quot;Reisen&quot;) besser zu verwalten zu können.</p>
<pre><code>#define REISENLIST_H
#include &quot;reisen.h&quot;

const int MAXSIZE=100; //um die Zeile geht es

class Reisenlist
{
private:
    Reisen myReiselist[MAXSIZE];
    int mySize;
public:
    Reisenlist();
    void addReisen(const Reisen&amp; reisen);
    void readFile(const std::string filename);
    void show();
    void writeFile(const std::string filename);

};

#endif // REISENLIST_H
</code></pre>
<pre><code>error: expected initializer before 'int'
 const int MAXSIZE=100;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2434754</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2434754</guid><dc:creator><![CDATA[Mvstylez]]></dc:creator><pubDate>Fri, 02 Jan 2015 10:11:43 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlerbehebung!?! on Fri, 26 Dec 2014 16:27:48 GMT]]></title><description><![CDATA[<p>Der Fehler ist vermutlich am Ende von reisen.h. Vielleicht Semikolon nach der Klassendefinition vergessen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2434755</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2434755</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Fri, 26 Dec 2014 16:27:48 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlerbehebung!?! on Fri, 26 Dec 2014 16:52:01 GMT]]></title><description><![CDATA[<p>Zeig mal den anderen Code wird wahrscheinlich so sein wie Bashar geschrieben hat.</p>
<p>Etwas anderes zu deinen read and write Funktionen:</p>
<pre><code>void readFile(const std::string filename);
    void writeFile(const std::string filename);
</code></pre>
<p>Du uebergibst bei readFile und writeFile den string &quot;by value&quot; das bedeutet, dass der String kopiert wird und die Kopie an die Funktion uebergeben wird.</p>
<p>Du moechtest vielleicht eher per reference uebergeben, denn eigentlich macht nur bei einer per reference Uebergabe const wirklich Sinn.</p>
<pre><code>void readFile(const std::string &amp; filename);
   void writeFile(const std::string &amp; filename);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2434756</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2434756</guid><dc:creator><![CDATA[chp++]]></dc:creator><pubDate>Fri, 26 Dec 2014 16:52:01 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlerbehebung!?! on Mon, 29 Dec 2014 13:57:55 GMT]]></title><description><![CDATA[<p>Vielen dank für die schnellen antworten daran lag es wirklich... hab wohl irgendwie ein Zeichen zu viel gelöscht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f622.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--crying_face"
      title=";-("
      alt="😢"
    /><br />
jetzt hab ich allerdings noch ein Problemchen bei dem ich jetzt wohl oder übel die anderen files auch mit hinposten muss..(will euch ja eigentlich das viele Lesen ersparen ;-))<br />
Hab mal gegoogelt woran der error liegen könnte aber von den vielen unterschiedlichen Problemen anderer Leute mit dem gleichen error aber anderer code hab ich nichts gelernt...</p>
<pre><code>zeile 9: error: expression list treated as compound expression in mem-initializer [-fpermissive]
     myLength(0)

Zeile 9: warning: left operand of comma operator has no effect [-Wunused-value]
</code></pre>
<p>reisen.h</p>
<pre><code>#ifndef REISEN_H
#define REISEN_H
#include &lt;iostream&gt;
#include &lt;string&gt;

class Reisen
{
private:
    int myId;
    double myPrice;
    int myLength;

public:
    Reisen();
    Reisen(int myId, double myPrice, int myLength);
    //getter
    int id() const {return myId;}
    double price() const{return myPrice;}
    int length() const{return myLength;}
    //setter
    void setId(int id){myId=id;}
    void setPrice(double price) {myPrice = price;}
    void setLength(int length) {myLength = length;}
    std::string serialize() const;

};
std::ostream&amp; operator&lt;&lt;(std::ostream&amp; str, const Reisen&amp; reisen);
Reisen createReiseFromString(const std::string&amp; s);
#endif // REISEN_H
</code></pre>
<p>reisen.cpp</p>
<pre><code>#include &quot;reisen.h&quot;
#include &lt;iostream&gt;
#include &lt;sstream&gt;
#include &quot;tokenizer.h&quot;

Reisen::Reisen() :
    myId(0),
    myPrice(0,0),
    myLength(0)          //Hier wird der Fehler angezeigt!!!!!
{}
Reisen::Reisen(int id, double price, int length) :
  myId(id),
  myPrice(price),
  myLength(length)
{}
std::string Reisen::serialize() const {
    std::ostringstream oss;
    oss&lt;&lt;myId&lt;&lt;&quot;^&quot;&lt;&lt;myPrice&lt;&lt;&quot;^&quot;&lt;&lt;myLength;
    return oss.str();
}
std::ostream&amp; operator&lt;&lt;(std::ostream&amp; str, const Reisen&amp; reisen) {
    str&lt;&lt;&quot;[Reise]&quot;&lt;&lt;reisen.id()&lt;&lt;&quot; Preis: &quot;&lt;&lt;reisen.price()&lt;&lt;&quot;€ Länge: &quot;&lt;&lt;reisen.length();
    return str;
}

Reisen createReiseFromString(const std::string&amp; s) {
    Tokenizer tok(s, '^');
    std::istringstream iD(tok.next());
    int id ;
    iD&gt;&gt;id;
    std::istringstream pricE(tok.next());
    double price;
    pricE&gt;&gt;price;
    std::istringstream lengtH(tok.next());
    int length;
    lengtH&gt;&gt;length;
    return Reisen(id,price,length);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2435155</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435155</guid><dc:creator><![CDATA[Mvstylez]]></dc:creator><pubDate>Mon, 29 Dec 2014 13:57:55 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlerbehebung!?! on Mon, 29 Dec 2014 13:59:00 GMT]]></title><description><![CDATA[<p>Punkt statt Komma:</p>
<pre><code class="language-cpp">myPrice(0.0)
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2435157</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435157</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Mon, 29 Dec 2014 13:59:00 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlerbehebung!?! on Mon, 29 Dec 2014 14:24:10 GMT]]></title><description><![CDATA[<p>Mvstylez schrieb:</p>
<blockquote>
<pre><code class="language-cpp">// ...
    double myPrice;
// ...
</code></pre>
</blockquote>
<p>Yay! again <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2435163</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435163</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Mon, 29 Dec 2014 14:24:10 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlerbehebung!?! on Mon, 29 Dec 2014 14:55:52 GMT]]></title><description><![CDATA[<p>oh mein gott <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="😮"
    /><br />
dummheit kennt keine grenzen <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="😉"
    /><br />
danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2435167</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435167</guid><dc:creator><![CDATA[Mvstylez]]></dc:creator><pubDate>Mon, 29 Dec 2014 14:55:52 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlerbehebung!?! on Tue, 30 Dec 2014 15:35:12 GMT]]></title><description><![CDATA[<p>ach ja Preis in ner double zahl <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f622.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--crying_face"
      title=";-("
      alt="😢"
    /> wenn ich noch zeit habe änder ich das am EEnde <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="😉"
    /><br />
noch eine kleine frage und zwar gibt es ein problem das ich sobald ich mehr als eine Reise beim starten einlesen lasse gibt es ein crash mit der fehlermeldung</p>
<pre><code>terminate called after throwing an instance of 'std::out_of_range'
  what():  basic_string::substr
</code></pre>
<p>das heist ja quasi der versucht irgendwo reinzuschreiben wo der speicher dafür nicht reserviert wurde...<br />
da es beim ersten mal aber klappt liegt es also nicht an dem string sondern dann warhscheinlich an der reisenlist[100] wo ich wahrscheinlich einen fehler gemacht habe aber mir fällt er nicht auf gebt mir mal einen schubs in die richtige richtung bitte <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="😉"
    /></p>
<p>nvm der debugger bricht an der stelle in tokenizer.cpp ab: sagt es mir ja auch schon in der fehlermeldung basic_string::substr ...<br />
aber keine ahnung ?!?</p>
<pre><code>std::string res = myString.substr(myPos, newpos-myPos);
</code></pre>
<p>reisen.h</p>
<pre><code>#ifndef REISEN_H
#define REISEN_H
#include &lt;iostream&gt;
#include &lt;string&gt;

class Reisen
{
private:
    int myId;
    double myPrice;
    int myLength;

public:
    Reisen();
    Reisen(int myId, double myPrice, int myLength);
    //getter
    int id() const {return myId;}
    double price() const{return myPrice;}
    int length() const{return myLength;}
    //setter
    void setId(int id){myId=id;}
    void setPrice(double price) {myPrice = price;}
    void setLength(int length) {myLength = length;}
    std::string serialize() const;

};
std::ostream&amp; operator&lt;&lt;(std::ostream&amp; str, const Reisen&amp; reisen);
Reisen createReiseFromString(const std::string&amp; s);
#endif // REISEN_H
</code></pre>
<p>reisen.cpp</p>
<pre><code>#include &quot;reisen.h&quot;
#include &lt;iostream&gt;
#include &lt;sstream&gt;
#include &quot;tokenizer.h&quot;

Reisen::Reisen() :
    myId(0),
    myPrice(0.0),
    myLength(0)
{}
Reisen::Reisen(int id, double price, int length) :
  myId(id),
  myPrice(price),
  myLength(length)
{}
std::string Reisen::serialize() const {
    std::ostringstream oss;
    oss&lt;&lt;myId&lt;&lt;&quot;^&quot;&lt;&lt;myPrice&lt;&lt;&quot;^&quot;&lt;&lt;myLength;
    return oss.str();
}
std::ostream&amp; operator&lt;&lt;(std::ostream&amp; str, const Reisen&amp; reisen) {
    str&lt;&lt;&quot;[Reise]&quot;&lt;&lt;reisen.id()&lt;&lt;&quot; Preis: &quot;&lt;&lt;reisen.price()&lt;&lt;&quot;€ Länge: &quot;&lt;&lt;reisen.length();
    return str;
}

Reisen createReiseFromString(const std::string&amp; s) {
    Tokenizer tok(s, '^');
    std::istringstream iD(tok.next());
    int id ;
    iD&gt;&gt;id;
    std::istringstream pricE(tok.next());
    double price;
    pricE&gt;&gt;price;
    std::istringstream lengtH(tok.next());
    int length;
    lengtH&gt;&gt;length;
    return Reisen(id,price,length);
}
</code></pre>
<p>reisenlist.h</p>
<pre><code>#ifndef REISENLIST_H
#define REISENLIST_H
#include &quot;reisen.h&quot;
#include &lt;iostream&gt;
#include &lt;string&gt;

const int MAXSIZE=100;

class Reisenlist
{
private:
    Reisen myReiselist[MAXSIZE];
    int mySize;
public:
    Reisenlist();
    void addReisen(const Reisen&amp; reisen);    
    void readFile(const std::string filename);
    void show();
    void writeFile(const std::string filename);

};

#endif // REISENLIST_H
</code></pre>
<p>reisenlist.cpp</p>
<pre><code>#include &quot;reisenlist.h&quot;
#include &lt;fstream&gt;
#include &lt;string&gt;

Reisenlist::Reisenlist():
    mySize(0)
{
}

void Reisenlist::addReisen(const Reisen&amp; reisen){
    myReiselist[mySize]= reisen;
    mySize++;
}
void Reisenlist::readFile(const std::string filename){
    std::ifstream fi(filename.c_str());
    if (!fi){
        std::cout&lt;&lt;&quot;Datei &quot;&lt;&lt;filename&lt;&lt;&quot; konnte nicht gelesen werden \n&quot;;
                   return;
    }
    std::string line;
    while (getline(fi, line)){
        if (line.size() == 0 || line[0] == '#'){
            continue;
        }
        Reisen reisen = createReiseFromString(line);
        myReiselist[mySize] = reisen;
        mySize++;
    }
    fi.close();
}
void Reisenlist::show() {
    for (int i = 0; i&lt;mySize; i++){
        std::cout&lt;&lt;myReiselist[i]&lt;&lt;std::endl;
    }
}

void Reisenlist::writeFile(const std::string filename){
    std::ofstream fo(filename.c_str());
    if (!fo){
        std::cout&lt;&lt;&quot;Datei &quot;&lt;&lt;filename&lt;&lt;&quot; kann nicht beschrieben werden.\n&quot;;
        return;
    }
  //nur zur erklärung
    fo&lt;&lt;&quot;# Pro Zeile ein Objekt\n&quot;;
    fo&lt;&lt;&quot;# ID^Preis^Länge\n&quot;;
    for (int i= 0; i&lt; mySize; i++) {
        fo&lt;&lt;myReiselist[i].serialize()&lt;&lt;std::endl;
    }
    fo.close();

}
</code></pre>
<p>tokenizer.h</p>
<pre><code>#ifndef TOKENIZER_H
#define TOKENIZER_H
#include &lt;iostream&gt;
#include &lt;string&gt;

class Tokenizer
{
private:
    std::string myString;
    char myTrenner;
    std::string::size_type myPos;

public:
    Tokenizer(const std::string&amp; s, char trenner);
    std::string next();
    bool hasMore() const;

};

#endif // TOKENIZER_H
</code></pre>
<p>tokenizer.cpp</p>
<pre><code>#include &quot;tokenizer.h&quot;

Tokenizer::Tokenizer(const std::string&amp; s,  char trenner):
    myString(s), myTrenner(trenner)
{
    //leerstring
    if (myString.size() == 0)
        myPos = std::string::npos;
}
std::string Tokenizer::next(){
    std::string::size_type newpos = myString.find(myTrenner,myPos);
    std::string res = myString.substr(myPos, newpos-myPos);
    myPos = (newpos == std::string::npos) ? newpos : newpos+1;
    return res;
}
bool Tokenizer::hasMore() const {
    return myPos != std::string::npos;
}
</code></pre>
<p>main</p>
<pre><code>#include &lt;iostream&gt;
#include &quot;reisenlist.h&quot;
#include &quot;reisen.h&quot;
#include &quot;tokenizer.h&quot;

const std::string FILENAME= &quot;Reisen.dat&quot;;

void newReise(Reisenlist&amp; reisenlist) {
    int id;
    double price;
    int length;
    std::cout&lt;&lt;&quot;\nID: &quot;;
    std::cin&gt;&gt;id;
    std::cout&lt;&lt;&quot;\nPreis: &quot;;
    std::cin&gt;&gt;price;
    std::cout&lt;&lt;&quot;\nLänge: &quot;;
    std::cin&gt;&gt;length;
    Reisen reisen(id,price,length);
    reisenlist.addReisen(reisen);
}
void menu(Reisenlist&amp; reisenlist){
    char answ;
    do {
        std::cout&lt;&lt;&quot;n - Neue Reise einfügen\n&quot;;
        std::cout&lt;&lt;&quot;l - Liste aller Reisen anzeigen\n&quot;;
        std::cout&lt;&lt;&quot;s - Neue Stadt einfügen\n&quot;;
        std::cout&lt;&lt;&quot;c - Stadt einer Reise zufügen\n&quot;;
        std::cout&lt;&lt;&quot;Eingabe: &quot;;
        std::cin&gt;&gt;answ;
        switch(answ){
        case 'n':
            newReise(reisenlist);
            break;
        case 'l':
            reisenlist.show();
            break;
        case 'q':
            break;
        default:
            std::cout&lt;&lt;&quot;Falsche Eingabe\n&quot;;
        }
    }while(answ != 'q');

}

int main()
{
    Reisenlist reisenlist;
    reisenlist.readFile(FILENAME);
    menu(reisenlist);
    reisenlist.writeFile(FILENAME);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2435360</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435360</guid><dc:creator><![CDATA[Mvstylez]]></dc:creator><pubDate>Tue, 30 Dec 2014 15:35:12 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlerbehebung!?! on Tue, 30 Dec 2014 15:32:48 GMT]]></title><description><![CDATA[<p>Mvstylez schrieb:</p>
<blockquote>
<p>einen schubs in die richtige richtung bitte <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="😉"
    /></p>
</blockquote>
<p>Wahrscheinlich benutzt Du irgendwo <code>string::substr()</code> mit ungültigen Parametern.<br />
Z.B. in <code>tokenizer::next()</code> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2435366</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435366</guid><dc:creator><![CDATA[Furble Wurble]]></dc:creator><pubDate>Tue, 30 Dec 2014 15:32:48 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlerbehebung!?! on Tue, 30 Dec 2014 15:49:23 GMT]]></title><description><![CDATA[<p>ah ja hab grade gesehen das es darum ja auch in der fehlermeldung geht und wo der debugger genau den fehler anzeigt... aber ich verstehe trozdem nicht warum der das beim ersten string hinbekommt und beim zweiten mal dann nicht das dürfte doch eigentlich kein unterschied machen myPos usw wird doch neu belegt also dürfte er nicht darüber hinausspringen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2435367</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435367</guid><dc:creator><![CDATA[Mvstylez]]></dc:creator><pubDate>Tue, 30 Dec 2014 15:49:23 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlerbehebung!?! on Tue, 30 Dec 2014 16:22:53 GMT]]></title><description><![CDATA[<p>also ich merk grade dem scheint nicht der fall zu sein so als ob der nach dem einlesen der Zeile nicht merkt das es eine neue Zeile ist und er wieder bei 0 anfangen muss.....<br />
was logisch ist wenn man vergisst das oben hinzuschreiben <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="😉"
    /> Danke!<br />
bin ich eigentlich der einzige der so viele Schusselfehler macht wenn es darum geht ein programm zu schreiben bzw. wie kann man da entgegenwirken?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2435371</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435371</guid><dc:creator><![CDATA[Mvstylez]]></dc:creator><pubDate>Tue, 30 Dec 2014 16:22:53 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlerbehebung!?! on Tue, 30 Dec 2014 17:41:13 GMT]]></title><description><![CDATA[<p>nein, das geht vielen am Anfang so. Die C++ Lernkurve ist sehr steil, und mit jeder durchwachten Nacht, die man auf der Suche nach der Ursache eines Schusselfehlers verbracht hat, sinkt die Schusselfehler-Rate, denn eine wegen Debuggings unter Zeitdruck durchwachte Nacht hat einen hervorragenden Lerneffekt (<strong>den</strong> Fehler macht man wahrscheinlich nicht ein zweites Mal :D)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2435389</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435389</guid><dc:creator><![CDATA[großbuchstaben]]></dc:creator><pubDate>Tue, 30 Dec 2014 17:41:13 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlerbehebung!?! on Tue, 30 Dec 2014 18:59:11 GMT]]></title><description><![CDATA[<p>haha ok gut zu wissen dass es hoffentlich irgendwann besser wird <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="😉"
    /><br />
Der Zwang das nicht allzu oft zu wiederhohlen ist auf alle fälle da...<br />
jetzt habe ich noch eine Frage zu einem Logik-Problem:<br />
ich hab jetzt noch die Klasse: Orte und die Klasse Orteliste... jetzt muss ich jeder Reise ein paar Orte und die Aufenthaltsdauer dieser Orte hinzufügen... kann ich dass einfach als ein Feld von int's schreiben die die Position der Orte in Ortlist angeben...<br />
quasi schnell runtergekrackselt so:</p>
<pre><code>class Reisen....
int myOrtID[10]; //sollen maximal 10 orte pro reise sein
int myOrtlength[10];
int mySize;
...
};

//woanders ;-)

for (i=0;i&lt;reise.mysize;i++){
cout&lt;&lt;ortliste[myOrtID[i&rsqb;&rsqb;&lt;&lt;&quot; Aufenthaltsdauer&quot;&lt;&lt;reise.myOrtLength;
}
</code></pre>
<p>hoffe das ist ungefähr verständlich wie ich das meine würde das so gehen oder gibt es bessere vorschläge <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="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2435413</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435413</guid><dc:creator><![CDATA[Mvstylez]]></dc:creator><pubDate>Tue, 30 Dec 2014 18:59:11 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlerbehebung!?! on Wed, 31 Dec 2014 09:36:53 GMT]]></title><description><![CDATA[<p>Du solltest deine Klasse besser &quot;Reise&quot; (d.h. in der Einzahl) nennen - und &quot;Ort&quot; (statt &quot;Orte&quot;). Eine gute sinnvolle Benennung ist das A und O.</p>
<p>Für deine Orte innerhalb der Reise-Klasse solltest du dann eine eigene Struktur anlegen:</p>
<pre><code class="language-cpp">struct ReiseOrt // oder Aufenthalt oder ...
{
  int OrtIndex; // alternativ: const Ort* (bzw. const Ort&amp;)
  int LengthOfStay;
}
</code></pre>
<p>Und statt des Arrays würde ich einen std::vector&lt;ReiseOrt&gt; vorschlagen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2435480</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435480</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Wed, 31 Dec 2014 09:36:53 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlerbehebung!?! on Wed, 31 Dec 2014 12:27:47 GMT]]></title><description><![CDATA[<p>danke für die Antwort. da wir vectors noch nich behandelt haben würde ich das lieber lassen als mich da jetzt kurzfristig reinzulesen <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="😉"
    /><br />
struct ist doch quasi das gleiche wie class oder hab ich da was falsch verstanden?<br />
Die Orte habe ich schon in ner extra klasse das problem ist in deinem fall müsste ich ja für jeden Ort der ja bei unterschiedlichen reisen unterschiedliche Aufenthaltsdauern haben kann ein extra object anlegen oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2435505</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435505</guid><dc:creator><![CDATA[Mvstylez]]></dc:creator><pubDate>Wed, 31 Dec 2014 12:27:47 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlerbehebung!?! on Wed, 31 Dec 2014 14:50:16 GMT]]></title><description><![CDATA[<p>ach ne nach nochmaligen drüberlesen du meinst das ich neben Ort und Reise noch eine Klasse aufmache &quot;Stay&quot;(was auch immer) und diese klasse dann in den Ort mit einfließen lasse oder?<br />
also quasi</p>
<pre><code>class Stay
{ int OrtID
int LengthOfStay
}

// und in der class Reise
class Reise
{myId
myLength
myPrice
//dann noch das hinzufügen:
Stay myOrte[];
mySize
</code></pre>
<p>das ergibt Sinn dann vermisch ich die Funktionen/Methoden auch nicht so...<br />
aber ich verstehe noch nicht ganz wie ich das dann wieder aufrufen kann<br />
sagen wir mal ich hab in der Reiselist[] 15 reisen stehen und ich müsste ja pro Reise z.B. 10 Orte hinzufügen selbst wenn ich eine klasse StayList mache müsste die ja aus einem 2x2 &quot;feld&quot; bestehen oder damit ich für jede Reise die OrtID's hinbekomme?!?<br />
bzw. was ich meine wenn ich dieses Stay myOrte[] dann aufrufe muss ich ja sowieso immer die Reise mit angeben erstellt der dann für jede Reise eine eigene Stay myOrte[] oder nur eins für alle?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2435532</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435532</guid><dc:creator><![CDATA[Mvstylez]]></dc:creator><pubDate>Wed, 31 Dec 2014 14:50:16 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlerbehebung!?! on Wed, 31 Dec 2014 15:13:17 GMT]]></title><description><![CDATA[<p>Der Vorteil von der Struktur ist, daß du dann nur noch ein Array hast. In deiner Variante müßtest du ja immer schauen, daß die zugehörigen Werte je Array-Index zusammenpassen (und wenn du ein größeres Array haben möchtest, müßtest du alle Arrays anpassen - anstatt nur das eine).</p>
<p>Wenn du also</p>
<pre><code class="language-cpp">Stay myOrte[10];
</code></pre>
<p>hast, dann kannst du einfach per</p>
<pre><code class="language-cpp">myOrte[index].OrtID
// bzw.
myOrte[index].LengthOfStay
</code></pre>
<p>auf die Werte zugreifen.</p>
<p>myOrte ist also genau so eine Membervariable wie in deinem ursprünglichen Code die Variablen myOrtID[10] und myOrtlength[10] - die Verschachtelung ist nur etwas anders.<br />
Wenn du jetzt noch einen weiteren Wert benötigst, so kannst du dann einfach diesen zu der Struktur Stay hinzufügen (anstatt wiederum ein neues Array davon anzulegen).<br />
Dies ist generell der Gedanke hinter der objektorientierten Programmierung!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2435539</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435539</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Wed, 31 Dec 2014 15:13:17 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlerbehebung!?! on Wed, 31 Dec 2014 15:23:39 GMT]]></title><description><![CDATA[<p>Vielen Dank! werde es so ausprobieren und hoffentlich hinbekommen <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="😉"
    /><br />
Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2435544</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435544</guid><dc:creator><![CDATA[Mvstylez]]></dc:creator><pubDate>Wed, 31 Dec 2014 15:23:39 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlerbehebung!?! on Fri, 02 Jan 2015 10:44:54 GMT]]></title><description><![CDATA[<p>Hab noch ein paar Probleme <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f622.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--crying_face"
      title=";-("
      alt="😢"
    /></p>
<p>Hab wahrscheinlich irgendwas übersehen..<br />
Damit will ich quasi die Aufenthalte der Reise hinzufügen aber irgendwie funktioniert das nicht richtig<br />
1. bei einem gefunden Ort funktioniert es zumindest bis zum speichern der Datei dann hab ich da einen fehler aber da schau ich später mal rein.. aber wieso funktioniert es dann nicht wenn ich den Ort erst neu erstellen muss?<br />
der Ort wird erstellt und den kann ich mir anzeigen lassen aber die Position des ortes in der Ortliste wird nicht gespeichert?!?</p>
<pre><code>Reisenlist::Reisenlist():
    mySize(0)
{
}
void Reisenlist::addStay(int id, Ortelist &amp;ortelist){
    bool added=false;
    for(int i=0; i&lt;mySize;i++){
        if (myReiselist.id()==id){
            std::string name;
            int length;
            bool foundOrt=1;
            std::cout&lt;&lt;&quot;\nBitte geben Sie den Namen des Ortes ein: \n&quot;;
            std::cin&gt;&gt;std::ws;
            getline(std::cin, name);
            for (int j=0; j&lt;ortelist.getMySize();j++){
                if(name==ortelist.getMyOrt(j)){
                    std::cout&lt;&lt;&quot;Geben sie die Aufenthaltsdauer an: &quot;;
                    std::cin&gt;&gt;length;
                    myReiselist[i].setStayId(j,length,myReiselist[i].staySize());
                    myReiselist[i].plusStaySize();
                    foundOrt=true;
                    added = true;
                    break;
                }else{foundOrt=false;
                }
            }
                if (!foundOrt){
                    std::cout&lt;&lt;&quot;Geben sie die Aufenthaltsdauer an: &quot;;
                    std::cin&gt;&gt;length;
                    Orte orte(name);
                    ortelist.addOrte(orte);
                    myReiselist[i].setStayId(ortelist.getMySize(),length,myReiselist[i].staySize());
                    myReiselist[i].plusStaySize();
                    added=true;

                }

        }
    }
    if (!added)std::cout&lt;&lt;&quot;\nUngültige Reise eingegeben\n&quot;;
}
</code></pre>
<ul>
<li></li>
</ul>
<p>die methoden dazu:</p>
<pre><code>#ifndef STAYS_H
#define STAYS_H
#include &lt;string&gt;

class Stays
{
private:
    int myStayId;
    int myStayLength;
public:
    Stays();
    Stays(int myStayId,int myStayLength);
    //getter
    int getStayId()const{return myStayId;}
    int getStayLength()const{return myStayLength;}
    //setter
    void setStayId(int stayId){myStayId = stayId;}
    void setStayLength(int stayLength){myStayLength = stayLength;}
    std::string serialize() const;
};

#endif // STAYS_H
</code></pre>
<p>und</p>
<pre><code>void plusStaySize(){myStaySize+=1;}
</code></pre>
<p>in der Reisen Klasse</p>
<p>2.Problem bei der Ausgabe gibt der anstelle der korrekten Stays immer irgendeine leere Stay klasse aus also kommt bei<br />
[i] int stayLength(int pos) const{return myStays[pos].getStayLength();}<br />
int getStayId(int pos) const{return myStays[pos].getStayId();}*<br />
immer return 0; aber da sollte eigentlich ja die id/aufenthaltsdauer der Reise stehen wenn ich im debugger Die reise selber anschaue steht da auch alles richtig drin und der übergibt die korrekten Werte aber greift irgendwie auf ein anderes myStays zu <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f622.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--crying_face"
      title=";-("
      alt="😢"
    /></p>
<p>Bei der Ausgabe</p>
<pre><code>#ifndef REISEN_H
#define REISEN_H
#include &lt;iostream&gt;
#include &lt;string&gt;
#include &quot;stays.h&quot;

const int MAXORT=10;

class Reisen
{
private:
    int myId;
    double myPrice;
    int myLength;
    Stays myStays[MAXORT];
    int myStaySize;

public:
    Reisen();
    Reisen(int myId, double myPrice, int myLength, Stays myStays[MAXORT], int staySize);
    //getter
    int id() const {return myId;}
    double price() const{return myPrice;}
    int length() const{return myLength;}
    int staySize() const{return myStaySize;}
    int stayLength(int pos) const{return myStays[pos].getStayLength();}
    int getStayId(int pos) const{return myStays[pos].getStayId();}
    //setter
    void setId(int id){myId=id;}
    void setStayId(int stayId,int stayLength, int s){myStays[s].setStayLength(stayLength); myStays[s].setStayId(stayId); }
    void setPrice(double price) {myPrice = price;}
    void setLength(int length) {myLength = length;}
    void setStaySize(int staySize){myStaySize = staySize;}
    //andere Methoden
    void createStay(int stayId, int stayLength);
    void plusStaySize(){myStaySize+=1;}
    std::string serialize() const;

};
std::ostream&amp; operator&lt;&lt;(std::ostream&amp; str, const Reisen&amp; reisen);
Reisen createReiseFromString(const std::string&amp; s);
#endif // REISEN_H
</code></pre>
<pre><code>#ifndef REISENLIST_H
#define REISENLIST_H
#include &quot;reisen.h&quot;
#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;ortelist.h&gt;

const int MAXSIZE2=100;

class Reisenlist
{
private:
    Reisen myReiselist[MAXSIZE2];
    int mySize;
public:
    Reisenlist();
    void addReisen(const Reisen&amp; reisen);    
    void readFile(const std::string filename);
    void show( Ortelist ortelist);
    void writeFile(const std::string filename);
    void searchMax();
    void searchMin();
    void preisProTag();
    void addStay(int id,Ortelist &amp;ortelist);
};

#endif // REISENLIST_H
</code></pre>
<pre><code>void Reisenlist::writeFile(const std::string filename){
    std::ofstream fo(filename.c_str());
    if (!fo){
        std::cout&lt;&lt;&quot;Datei &quot;&lt;&lt;filename&lt;&lt;&quot; kann nicht beschrieben werden.\n&quot;;
        return;
    }
  //nur zur erklärung
    fo&lt;&lt;&quot;# ID^Preis^Reisenlänge^AnzahlBesuchterOrte\n&quot;;
    fo&lt;&lt;&quot;# 2. Zeile: DazugehörendeOrte^Aufenthaltsdauer\n&quot;;
    for (int i= 0; i&lt; mySize; i++) {
        fo&lt;&lt;myReiselist[i].serialize()&lt;&lt;std::endl;
        fo&lt;&lt;myReiselist[i].staySize()&lt;&lt;&quot;^&quot;;
        for(int j=0;j&lt;myReiselist[i].staySize();j++){
            fo&lt;&lt;myReiselist[i].getStayId(j)&lt;&lt;&quot;^&quot;&lt;&lt;myReiselist[i].stayLength(j)&lt;&lt;&quot;^&quot;;
        }
        if (myReiselist[i].staySize()==0){
            fo&lt;&lt;&quot;0^0^0&quot;;
        }
        fo&lt;&lt;std::endl;
    }
    fo.close();

}
</code></pre>
<p>falls ich was vergessen habe zu posten kommt das gerne noch mit hin..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2435725</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435725</guid><dc:creator><![CDATA[Mvstylez]]></dc:creator><pubDate>Fri, 02 Jan 2015 10:44:54 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlerbehebung!?! on Fri, 02 Jan 2015 10:44:57 GMT]]></title><description><![CDATA[<p>So ganz durchschaue ich deinen Code nicht (die Methode addStay macht m.E. zu viel und sollte auf mehrere kleinere Funktionen aufgeteilt werden).</p>
<p>Aber besser ist es sowieso, wenn du selber den Fehler findest.<br />
Was für eine IDE (Editor) verwendest du denn? Am besten, du lernst den Umgang mit dem Debugger (Stichworte: Breakpoint, Watch, CallStack).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2435750</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435750</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Fri, 02 Jan 2015 10:44:57 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlerbehebung!?! on Fri, 02 Jan 2015 11:01:29 GMT]]></title><description><![CDATA[<p>Ich kann dir leider keine Lösung sagen, aber:<br />
Stichwort ist hier <code>minimales Beispiel</code> . Manchmal entdeckt man auch selber leicht den Fehler, wenn man versucht das Problem aufs Wesentliche zu beschränken.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2435752</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435752</guid><dc:creator><![CDATA[hardware]]></dc:creator><pubDate>Fri, 02 Jan 2015 11:01:29 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlerbehebung!?! on Fri, 02 Jan 2015 11:04:20 GMT]]></title><description><![CDATA[<p>Verwende QT creator und mit dem Debugger arbeite ich schon aber von watch und Callstacks noch nié was gehört (es sei denn watch bezeichnet einfach die Möglichkeit variableninhalte anzuschauen). Meines erachtens schickt der alles richtig hin und her hab mein beitrag davor nochmal editiert, kann ich dir irgendwas verständlicher machen an dem Code?<br />
quasi sobald die Id gefunden wurde schaut er ob es den Ort schon gibt oder nicht<br />
und wenn es ihn gibt sucht er nach der Position in die der Ort gespeichert ist übergibt das an myStayId,<br />
wenn es ihn nicht gibt legt er einen Neuen Ort an und übergibt die position wo er den neuen Ort gespeichert hat an myStayId</p>
<p>könnte es daran liegen das ich die ortelist auf eine bestimmte Art übergebe?<br />
wobei den Ort erstellt es ja <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f622.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--crying_face"
      title=";-("
      alt="😢"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2435753</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435753</guid><dc:creator><![CDATA[Mvstylez]]></dc:creator><pubDate>Fri, 02 Jan 2015 11:04:20 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlerbehebung!?! on Fri, 02 Jan 2015 11:16:49 GMT]]></title><description><![CDATA[<pre><code>f (!foundOrt){
                    std::cout&lt;&lt;&quot;Geben sie die Aufenthaltsdauer an: &quot;;
                    std::cin&gt;&gt;length;
                    Orte orte(name);
                    ortelist.addOrte(orte);
                    myReiselist[i].setStayId(ortelist.getMySize(),length,myReiselist[i].staySize());
                    myReiselist[i].plusStaySize();
                    added=true;
</code></pre>
<p>hab den Fehler gefunden das muss heißen</p>
<pre><code>ortelist.getMySize()-1
</code></pre>
<p>da bei addOrte ja auch die ortelist.mySize schon +1 gemacht wird hab ich quasi immer eine postition zu viel angegeben was aber ja nicht auffällt da die ja alle initialisiert werden <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f622.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--crying_face"
      title=";-("
      alt="😢"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2435755</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435755</guid><dc:creator><![CDATA[Mvstylez]]></dc:creator><pubDate>Fri, 02 Jan 2015 11:16:49 GMT</pubDate></item></channel></rss>