<?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[fstream, struct, speichern laden]]></title><description><![CDATA[<p>hallo,</p>
<p>habe wieder das problem wie damals, aber irgendwas stimmt bei meiner neuen Anwendung noch nicht...</p>
<p>thx</p>
<pre><code class="language-cpp">struct Kamera
{
    int         minThrow;
    int         maxThrow;
    int         werteAnzahl;
    bool        StandardDecoder;
    bool        HighspeedDecoder;
    AnsiString  Linse;
    AnsiString  ExcelDatei;
    AnsiString  ID_StandardDecoder;
    AnsiString  ID_HighspeedDecoder;
    std::vector &lt;int&gt;    Throw;
    std::vector &lt;double&gt; Resolution;
    std::vector &lt;double&gt; Coverage;
    std::vector &lt;double&gt; MinElementPreferred_015;
    std::vector &lt;double&gt; MinElementAbsolute_015;
    std::vector &lt;double&gt; MinElementPreferred_1545;
    std::vector &lt;double&gt; MinElementAbsolute_1545;
    std::vector &lt;double&gt; MaxBeltSpeed_StandardDecoder;
    std::vector &lt;double&gt; MaxBeltSpeed_HighspeedDecoder;

    int getPositionByThrow(int thr)
    {
      for(int i = 0; i &lt; werteAnzahl; i ++)
      {
        if( Throw[i] == thr ) { return i; }
      }

    return -1;
    }

    bool saveToFile(AnsiString pfad, AnsiString endung)
    {
      ofstream ofl((pfad + &quot;.&quot; + endung).c_str(), ios::out|ios::binary);

      if(!ofl)
      {
        return false;
      }

      ofl.write(reinterpret_cast&lt;const char*&gt;(&amp;minThrow), sizeof(int));
      ofl.write(reinterpret_cast&lt;const char*&gt;(&amp;maxThrow), sizeof(int));
      ofl.write(reinterpret_cast&lt;const char*&gt;(&amp;werteAnzahl), sizeof(int));

      int sd = (int)StandardDecoder;
      int hd = (int)HighspeedDecoder;
      ofl.write(reinterpret_cast&lt;const char*&gt;(&amp;sd), sizeof(int));
      ofl.write(reinterpret_cast&lt;const char*&gt;(&amp;hd), sizeof(int));

      int strsize = Linse.Length();
      ofl.write(reinterpret_cast&lt;const char*&gt;(&amp;strsize), sizeof(strsize));
      ofl.write(Linse.c_str(), strsize+1);

      strsize = ExcelDatei.Length();
      ofl.write(reinterpret_cast&lt;const char*&gt;(&amp;strsize), sizeof(strsize));
      ofl.write(ExcelDatei.c_str(), strsize+1);

      strsize = ID_StandardDecoder.Length();
      ofl.write(reinterpret_cast&lt;const char*&gt;(&amp;strsize), sizeof(strsize));
      ofl.write(ID_StandardDecoder.c_str(), strsize+1);

      strsize = ID_HighspeedDecoder.Length();
      ofl.write(reinterpret_cast&lt;const char*&gt;(&amp;strsize), sizeof(strsize));
      ofl.write(ID_HighspeedDecoder.c_str(), strsize+1);

      for( int i = 0; i &lt; werteAnzahl; i ++ )
      {
        ofl.write(reinterpret_cast&lt;const char*&gt;(&amp;Throw[i]), sizeof(int));
        ofl.write(reinterpret_cast&lt;const char*&gt;(&amp;Resolution[i]), sizeof(double));
        ofl.write(reinterpret_cast&lt;const char*&gt;(&amp;Coverage[i]), sizeof(double));
        ofl.write(reinterpret_cast&lt;const char*&gt;(&amp;MinElementPreferred_015[i]), sizeof(double));
        ofl.write(reinterpret_cast&lt;const char*&gt;(&amp;MinElementAbsolute_015[i]), sizeof(double));
        ofl.write(reinterpret_cast&lt;const char*&gt;(&amp;MinElementPreferred_1545[i]), sizeof(double));
        ofl.write(reinterpret_cast&lt;const char*&gt;(&amp;MinElementAbsolute_1545[i]), sizeof(double));
        ofl.write(reinterpret_cast&lt;const char*&gt;(&amp;MaxBeltSpeed_StandardDecoder[i]), sizeof(double));
        ofl.write(reinterpret_cast&lt;const char*&gt;(&amp;MaxBeltSpeed_HighspeedDecoder[i]), sizeof(double));
      }

      ofl.close();
    }

    bool readFromFile(AnsiString datei)
    {
      ifstream ifl(datei.c_str(), ios::in|ios::binary);

      int strsize;
      ifl.read(reinterpret_cast&lt;char*&gt;(&amp;strsize), sizeof(strsize));
      minThrow = strsize;

      ifl.read(reinterpret_cast&lt;char*&gt;(&amp;strsize), sizeof(strsize));
      maxThrow = strsize;

      ifl.read(reinterpret_cast&lt;char*&gt;(&amp;strsize), sizeof(strsize));
      werteAnzahl = strsize;

      ifl.read(reinterpret_cast&lt;char*&gt;(&amp;strsize), sizeof(strsize));
      StandardDecoder = (bool)strsize;

      ifl.read(reinterpret_cast&lt;char*&gt;(&amp;strsize), sizeof(strsize));
      HighspeedDecoder = (bool)strsize;

      char *tstr;
      ifl.read(reinterpret_cast&lt;char*&gt;(&amp;strsize), sizeof(strsize));
      tstr = new char[strsize+1];
      ifl.read(tstr, strsize+1);
      Linse = tstr;
      delete[] tstr;

      *tstr;
      ifl.read(reinterpret_cast&lt;char*&gt;(&amp;strsize), sizeof(strsize));
      tstr = new char[strsize+1];
      ifl.read(tstr, strsize+1);
      ExcelDatei = tstr;
      delete[] tstr;

      *tstr;
      ifl.read(reinterpret_cast&lt;char*&gt;(&amp;strsize), sizeof(strsize));
      tstr = new char[strsize+1];
      ifl.read(tstr, strsize+1);
      ID_StandardDecoder = tstr;
      delete[] tstr;

      *tstr;
      ifl.read(reinterpret_cast&lt;char*&gt;(&amp;strsize), sizeof(strsize));
      tstr = new char[strsize+1];
      ifl.read(tstr, strsize+1);
      ID_HighspeedDecoder = tstr;
      delete[] tstr;

      for( int i = 0; i &lt; werteAnzahl; i ++ )
      {
        int si;
        ifl.read(reinterpret_cast&lt;char*&gt;(&amp;si), sizeof(si));
        Throw.push_back(si);

        double siz;
        ifl.read(reinterpret_cast&lt;char*&gt;(&amp;siz), sizeof(siz));
        Resolution.push_back(siz);

        ifl.read(reinterpret_cast&lt;char*&gt;(&amp;siz), sizeof(siz));
        Coverage.push_back(siz);

        ifl.read(reinterpret_cast&lt;char*&gt;(&amp;siz), sizeof(siz));
        MinElementPreferred_015.push_back(siz);

        ifl.read(reinterpret_cast&lt;char*&gt;(&amp;siz), sizeof(siz));
        MinElementAbsolute_015.push_back(siz);

        ifl.read(reinterpret_cast&lt;char*&gt;(&amp;siz), sizeof(siz));
        MinElementPreferred_1545.push_back(siz);

        ifl.read(reinterpret_cast&lt;char*&gt;(&amp;siz), sizeof(siz));
        MinElementAbsolute_1545.push_back(siz);

        ifl.read(reinterpret_cast&lt;char*&gt;(&amp;siz), sizeof(siz));
        MaxBeltSpeed_StandardDecoder.push_back(siz);

        ifl.read(reinterpret_cast&lt;char*&gt;(&amp;siz), sizeof(siz));
        MaxBeltSpeed_HighspeedDecoder.push_back(siz);
      }

      ifl.close();
    }
};
</code></pre>
<p>und so lad/speicher ichs:</p>
<pre><code class="language-cpp">Kamera test;
  Kameras[0].saveToFile(getProgDir(),&quot;pln&quot;);
  test.readFromFile(getProgDir() + &quot;a.pln&quot;);
  AnsiString dummy = (AnsiString)test.minThrow;
  Application-&gt;MessageBox(dummy.c_str(),&quot;Dummy&quot;,MB_ICONINFORMATION);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/189116/fstream-struct-speichern-laden</link><generator>RSS for Node</generator><lastBuildDate>Fri, 25 Sep 2026 07:51:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/189116.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 08 Aug 2007 16:02:10 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to fstream, struct, speichern laden on Wed, 08 Aug 2007 16:02:10 GMT]]></title><description><![CDATA[<p>hallo,</p>
<p>habe wieder das problem wie damals, aber irgendwas stimmt bei meiner neuen Anwendung noch nicht...</p>
<p>thx</p>
<pre><code class="language-cpp">struct Kamera
{
    int         minThrow;
    int         maxThrow;
    int         werteAnzahl;
    bool        StandardDecoder;
    bool        HighspeedDecoder;
    AnsiString  Linse;
    AnsiString  ExcelDatei;
    AnsiString  ID_StandardDecoder;
    AnsiString  ID_HighspeedDecoder;
    std::vector &lt;int&gt;    Throw;
    std::vector &lt;double&gt; Resolution;
    std::vector &lt;double&gt; Coverage;
    std::vector &lt;double&gt; MinElementPreferred_015;
    std::vector &lt;double&gt; MinElementAbsolute_015;
    std::vector &lt;double&gt; MinElementPreferred_1545;
    std::vector &lt;double&gt; MinElementAbsolute_1545;
    std::vector &lt;double&gt; MaxBeltSpeed_StandardDecoder;
    std::vector &lt;double&gt; MaxBeltSpeed_HighspeedDecoder;

    int getPositionByThrow(int thr)
    {
      for(int i = 0; i &lt; werteAnzahl; i ++)
      {
        if( Throw[i] == thr ) { return i; }
      }

    return -1;
    }

    bool saveToFile(AnsiString pfad, AnsiString endung)
    {
      ofstream ofl((pfad + &quot;.&quot; + endung).c_str(), ios::out|ios::binary);

      if(!ofl)
      {
        return false;
      }

      ofl.write(reinterpret_cast&lt;const char*&gt;(&amp;minThrow), sizeof(int));
      ofl.write(reinterpret_cast&lt;const char*&gt;(&amp;maxThrow), sizeof(int));
      ofl.write(reinterpret_cast&lt;const char*&gt;(&amp;werteAnzahl), sizeof(int));

      int sd = (int)StandardDecoder;
      int hd = (int)HighspeedDecoder;
      ofl.write(reinterpret_cast&lt;const char*&gt;(&amp;sd), sizeof(int));
      ofl.write(reinterpret_cast&lt;const char*&gt;(&amp;hd), sizeof(int));

      int strsize = Linse.Length();
      ofl.write(reinterpret_cast&lt;const char*&gt;(&amp;strsize), sizeof(strsize));
      ofl.write(Linse.c_str(), strsize+1);

      strsize = ExcelDatei.Length();
      ofl.write(reinterpret_cast&lt;const char*&gt;(&amp;strsize), sizeof(strsize));
      ofl.write(ExcelDatei.c_str(), strsize+1);

      strsize = ID_StandardDecoder.Length();
      ofl.write(reinterpret_cast&lt;const char*&gt;(&amp;strsize), sizeof(strsize));
      ofl.write(ID_StandardDecoder.c_str(), strsize+1);

      strsize = ID_HighspeedDecoder.Length();
      ofl.write(reinterpret_cast&lt;const char*&gt;(&amp;strsize), sizeof(strsize));
      ofl.write(ID_HighspeedDecoder.c_str(), strsize+1);

      for( int i = 0; i &lt; werteAnzahl; i ++ )
      {
        ofl.write(reinterpret_cast&lt;const char*&gt;(&amp;Throw[i]), sizeof(int));
        ofl.write(reinterpret_cast&lt;const char*&gt;(&amp;Resolution[i]), sizeof(double));
        ofl.write(reinterpret_cast&lt;const char*&gt;(&amp;Coverage[i]), sizeof(double));
        ofl.write(reinterpret_cast&lt;const char*&gt;(&amp;MinElementPreferred_015[i]), sizeof(double));
        ofl.write(reinterpret_cast&lt;const char*&gt;(&amp;MinElementAbsolute_015[i]), sizeof(double));
        ofl.write(reinterpret_cast&lt;const char*&gt;(&amp;MinElementPreferred_1545[i]), sizeof(double));
        ofl.write(reinterpret_cast&lt;const char*&gt;(&amp;MinElementAbsolute_1545[i]), sizeof(double));
        ofl.write(reinterpret_cast&lt;const char*&gt;(&amp;MaxBeltSpeed_StandardDecoder[i]), sizeof(double));
        ofl.write(reinterpret_cast&lt;const char*&gt;(&amp;MaxBeltSpeed_HighspeedDecoder[i]), sizeof(double));
      }

      ofl.close();
    }

    bool readFromFile(AnsiString datei)
    {
      ifstream ifl(datei.c_str(), ios::in|ios::binary);

      int strsize;
      ifl.read(reinterpret_cast&lt;char*&gt;(&amp;strsize), sizeof(strsize));
      minThrow = strsize;

      ifl.read(reinterpret_cast&lt;char*&gt;(&amp;strsize), sizeof(strsize));
      maxThrow = strsize;

      ifl.read(reinterpret_cast&lt;char*&gt;(&amp;strsize), sizeof(strsize));
      werteAnzahl = strsize;

      ifl.read(reinterpret_cast&lt;char*&gt;(&amp;strsize), sizeof(strsize));
      StandardDecoder = (bool)strsize;

      ifl.read(reinterpret_cast&lt;char*&gt;(&amp;strsize), sizeof(strsize));
      HighspeedDecoder = (bool)strsize;

      char *tstr;
      ifl.read(reinterpret_cast&lt;char*&gt;(&amp;strsize), sizeof(strsize));
      tstr = new char[strsize+1];
      ifl.read(tstr, strsize+1);
      Linse = tstr;
      delete[] tstr;

      *tstr;
      ifl.read(reinterpret_cast&lt;char*&gt;(&amp;strsize), sizeof(strsize));
      tstr = new char[strsize+1];
      ifl.read(tstr, strsize+1);
      ExcelDatei = tstr;
      delete[] tstr;

      *tstr;
      ifl.read(reinterpret_cast&lt;char*&gt;(&amp;strsize), sizeof(strsize));
      tstr = new char[strsize+1];
      ifl.read(tstr, strsize+1);
      ID_StandardDecoder = tstr;
      delete[] tstr;

      *tstr;
      ifl.read(reinterpret_cast&lt;char*&gt;(&amp;strsize), sizeof(strsize));
      tstr = new char[strsize+1];
      ifl.read(tstr, strsize+1);
      ID_HighspeedDecoder = tstr;
      delete[] tstr;

      for( int i = 0; i &lt; werteAnzahl; i ++ )
      {
        int si;
        ifl.read(reinterpret_cast&lt;char*&gt;(&amp;si), sizeof(si));
        Throw.push_back(si);

        double siz;
        ifl.read(reinterpret_cast&lt;char*&gt;(&amp;siz), sizeof(siz));
        Resolution.push_back(siz);

        ifl.read(reinterpret_cast&lt;char*&gt;(&amp;siz), sizeof(siz));
        Coverage.push_back(siz);

        ifl.read(reinterpret_cast&lt;char*&gt;(&amp;siz), sizeof(siz));
        MinElementPreferred_015.push_back(siz);

        ifl.read(reinterpret_cast&lt;char*&gt;(&amp;siz), sizeof(siz));
        MinElementAbsolute_015.push_back(siz);

        ifl.read(reinterpret_cast&lt;char*&gt;(&amp;siz), sizeof(siz));
        MinElementPreferred_1545.push_back(siz);

        ifl.read(reinterpret_cast&lt;char*&gt;(&amp;siz), sizeof(siz));
        MinElementAbsolute_1545.push_back(siz);

        ifl.read(reinterpret_cast&lt;char*&gt;(&amp;siz), sizeof(siz));
        MaxBeltSpeed_StandardDecoder.push_back(siz);

        ifl.read(reinterpret_cast&lt;char*&gt;(&amp;siz), sizeof(siz));
        MaxBeltSpeed_HighspeedDecoder.push_back(siz);
      }

      ifl.close();
    }
};
</code></pre>
<p>und so lad/speicher ichs:</p>
<pre><code class="language-cpp">Kamera test;
  Kameras[0].saveToFile(getProgDir(),&quot;pln&quot;);
  test.readFromFile(getProgDir() + &quot;a.pln&quot;);
  AnsiString dummy = (AnsiString)test.minThrow;
  Application-&gt;MessageBox(dummy.c_str(),&quot;Dummy&quot;,MB_ICONINFORMATION);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1340950</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1340950</guid><dc:creator><![CDATA[Dragonfire]]></dc:creator><pubDate>Wed, 08 Aug 2007 16:02:10 GMT</pubDate></item><item><title><![CDATA[Reply to fstream, struct, speichern laden on Wed, 08 Aug 2007 19:48:42 GMT]]></title><description><![CDATA[<p>Welches Problem hattest du den <strong>damals</strong>?</p>
<p>Der Code hat ein bischen viel reinterpret_casts abbekommen<br />
findest du nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1341061</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1341061</guid><dc:creator><![CDATA[Mario Sandler]]></dc:creator><pubDate>Wed, 08 Aug 2007 19:48:42 GMT</pubDate></item><item><title><![CDATA[Reply to fstream, struct, speichern laden on Wed, 08 Aug 2007 22:01:24 GMT]]></title><description><![CDATA[<blockquote>
<p>Welches Problem hattest du den damals?</p>
</blockquote>
<p>Das überhaupt hinzubekommen.</p>
<blockquote>
<p>Der Code hat ein bischen viel reinterpret_casts abbekommen<br />
findest du nicht?</p>
</blockquote>
<p>Wass sollte ich dann verwenden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1341131</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1341131</guid><dc:creator><![CDATA[Dragonfire]]></dc:creator><pubDate>Wed, 08 Aug 2007 22:01:24 GMT</pubDate></item><item><title><![CDATA[Reply to fstream, struct, speichern laden on Thu, 09 Aug 2007 07:51:10 GMT]]></title><description><![CDATA[<p>Dragonfire schrieb:</p>
<blockquote>
<blockquote>
<p>Welches Problem hattest du den damals?</p>
</blockquote>
<p>Das überhaupt hinzubekommen.</p>
</blockquote>
<p>Und was meinst, wieviele Leute jetzt losgehen, um das Board nach deinem letzten Thread zu dem Thema zu durchsuchen?</p>
<blockquote>
<blockquote>
<p>Der Code hat ein bischen viel reinterpret_casts abbekommen<br />
findest du nicht?</p>
</blockquote>
<p>Wass sollte ich dann verwenden?</p>
</blockquote>
<p>Gegenfrage: Was genau hast du eigentlich vor?</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/8753">@Storm</a>: Beim binären Speichern über fstreams kommst du an reinterpret_cast&lt;&gt; nicht vorbei (außer mit einem C-Cast, aber der ist noch schlimmer).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1341243</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1341243</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 09 Aug 2007 07:51:10 GMT</pubDate></item><item><title><![CDATA[Reply to fstream, struct, speichern laden on Thu, 09 Aug 2007 08:59:32 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>erstmal würde ich das anders strukturieren:</p>
<p>Entweder</p>
<p>A) gehören</p>
<pre><code>Throw
Resolution
Coverage
MinElementPreferred_015
MinElementAbsolute_015
MinElementPreferred_1545
MinElementAbsolute_1545
MaxBeltSpeed_StandardDecoder
MaxBeltSpeed_HighspeedDecoder
</code></pre>
<p>jeweils zusammen, dann solltest Du sie auch entsprechend bündeln.<br />
Beispiel:</p>
<pre><code class="language-cpp">struct Wert {
   int Throw;
   double Resolution, Coverage, MinElementPreferred_015, MinElementAbsolute_015,
          MinElementPreferred_1545, MinElementAbsolute_1545, 
          MaxBeltSpeed_StandardDecoder, MaxBeltSpeed_HighspeedDecoder
   bool saveToFile(AnsiString pfad, AnsiString endung);
   bool loadFromFile(AnsiString pfad, AnsiString endung);
};

bool Wert::saveToFile(AnsiString pfad, AnsiString endung) {
   // Hier die Implementierung rein
}

bool Wert::loadFromFile(AnsiString pfad, AnsiString endung) {
   // Hier die Implementierung rein
}

struct Kamera
{
    int         minThrow;
    int         maxThrow;
    bool        StandardDecoder;
    bool        HighspeedDecoder;
    AnsiString  Linse;
    AnsiString  ExcelDatei;
    AnsiString  ID_StandardDecoder;
    AnsiString  ID_HighspeedDecoder; 
    vector&lt;Wert&gt; Werte;
    // separaten &quot;Werte-Zähler&quot; braucht's nicht: Das steht in Werte.size()
    bool saveToFile(AnsiString pfad, AnsiString endung) {
      for(vector&lt;Wert&gt;::const_iterator it = Werte.begin();  it != Werte.end(); ++it)
         if(!it-&gt;saveToFile(pfad, endung)) return false;
      return true;
   }
   bool loadFromFile(AnsiString pfad, AnsiString endung) {   // ebenso }
....
};
</code></pre>
<p>Oder</p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--smiling_face_with_sunglasses"
      title="B)"
      alt="😎"
    /> sie sind unabhängig von einander, dann solltest Du die Vektoren auch getrennt abspeichern.<br />
Das ist letztlich noch einfacher, weil Du eigentlich nur 2*2 Funktionen (bzw. 2*1 template) brauchst:</p>
<pre><code class="language-cpp">template &lt;typename T&gt;
bool saveVectortoFile(vector&lt;T&gt; const&amp;, AnsiString pfad, AnsiString endung);

template &lt;typename T&gt;
bool loadVectorFromFile(vector&lt;T&gt;&amp;, AnsiString pfad, AnsiString endung);
</code></pre>
<p>Zwischen A) und <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--smiling_face_with_sunglasses"
      title="B)"
      alt="😎"
    /> musst Du fachlich entscheiden. Dein Ansatz birgt das Risiko, dass Dir &quot;Dinge auseinanderlaufen&quot;.</p>
<p>Noch ein paar Tipps:</p>
<ul>
<li>Vergiss das &quot;Binär speichern mittels reinterpret_cast !!<br />
Hat nur Nachteile (Compiler-/Plattformabhängig, unleserlich, nicht manuell zu korrigieren/prüfen, ...) und kaum nennenswerte Vorteile (bei kleinen Werten braucht ein &quot;int&quot; sogar mehr Platz als seine Stringrepräsentation)....</li>
<li>Überlege Dir, ob statt des exotischen &quot;saveTo/loadFromFile()&quot; nicht eine Streamstruktur besser geeignet wäre, wo Du in einen ostream schreibst/istream liest.<br />
Vorteil1: Funktioniert mit allen &quot;Datenpools&quot; - egal ob in File, Konsole, Netzwerk, Drucker, ....<br />
Vorteil2: Hält &quot;File-Zeug&quot;, mit dem die Fachobjekte wie &quot;Kamera&quot; eigentlich nichts zu tun haben, von ihnen fern =&gt; sauberere Aufgabentrennung. Beispiel:</li>
</ul>
<pre><code class="language-cpp">int main() {
   Kamera k;

   ofstream kameraFile(&quot;KF.txt&quot;);
   iNetzWerk_stream netz(myNet_Option);

   netz &gt;&gt; k; // Kameradaten vom Netz einlesen ...
   k.doSomething();
   kameraFile &lt;&lt; k; // .. in File speichern ...
   cout &lt;&lt; k;   // .. und zur Kontrolle auf Konsole ausgeben.
...
</code></pre>
<p>=&gt; Die Verwaltung/Konfiguration der verschiedenen &quot;Pools&quot; (Netz, File, Konsole, ...) braucht die Kamera nicht mehr zu interessieren, sondern wird dort definiert, wo es Hauptaufgabe ist (hier in main(), kann aber auch separate &quot;KonfigKlasse&quot; sein).</p>
<ul>
<li>Beschäftige Dich mal mit exceptions; könnte sein, dass das bei Dir besser &quot;klappt&quot; als das Arbeiten mit Returnwerten.</li>
</ul>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1341277</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1341277</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Thu, 09 Aug 2007 08:59:32 GMT</pubDate></item></channel></rss>