<?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[Pfeiloperator]]></title><description><![CDATA[<p>Hallo Zusammen,</p>
<p>ich bin hier langsam am verzweifeln. Habe folgendes Problem:</p>
<p>Im Initialisierungsteil einer Klasse erzeuge ich einen Pointer *file auf ein Objekt einer selbstdefinierten Klasse &quot;Data&quot;.<br />
Im Konstruktor erzeuge ich ein Objekt dieser Klasse und weise anschliessend dem zuvor definiertem Pointer die Adresse dieses Objektes zu.</p>
<pre><code class="language-cpp">class SPR
{
    private:
        Goniometer G;
        Data *file ;
        KUSB3100 *sensor;

  public:
  SPR(string comment, string date,char *filename)
  {
      bool s_flag=true; //error-flag für Sensor-Objekt

      G.init();
      Data P(comment,date,filename);
      file=&amp;P;
      KUSB3100 S(&amp;s_flag);
      S.init(0);
      sensor=&amp;S;  
  }
  ...
</code></pre>
<p>Wenn ich jetzt mittel Pfeiloperator auf eine der Methoden der Klasse Data zugreien möchte, schmiert das Programm ab.</p>
<pre><code class="language-cpp">file-&gt;write(line,0,k);
</code></pre>
<p>Compilieren kann ich es problemlos. Das schaut für mich so aus, als würde ich versuchen , auf nicht definierte Speicherbereiche zuzugreifen aber ich weiss nicht wo mein Fehler liegt.</p>
<p>Vielleicht weiß ja von euch jemand Rat</p>
<p>Ich sag mal vielen Dank im Voraus</p>
<p>Grüße</p>
<p>Kristian</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/185109/pfeiloperator</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 02:19:07 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/185109.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 21 Jun 2007 21:54:28 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Pfeiloperator on Thu, 21 Jun 2007 21:54:28 GMT]]></title><description><![CDATA[<p>Hallo Zusammen,</p>
<p>ich bin hier langsam am verzweifeln. Habe folgendes Problem:</p>
<p>Im Initialisierungsteil einer Klasse erzeuge ich einen Pointer *file auf ein Objekt einer selbstdefinierten Klasse &quot;Data&quot;.<br />
Im Konstruktor erzeuge ich ein Objekt dieser Klasse und weise anschliessend dem zuvor definiertem Pointer die Adresse dieses Objektes zu.</p>
<pre><code class="language-cpp">class SPR
{
    private:
        Goniometer G;
        Data *file ;
        KUSB3100 *sensor;

  public:
  SPR(string comment, string date,char *filename)
  {
      bool s_flag=true; //error-flag für Sensor-Objekt

      G.init();
      Data P(comment,date,filename);
      file=&amp;P;
      KUSB3100 S(&amp;s_flag);
      S.init(0);
      sensor=&amp;S;  
  }
  ...
</code></pre>
<p>Wenn ich jetzt mittel Pfeiloperator auf eine der Methoden der Klasse Data zugreien möchte, schmiert das Programm ab.</p>
<pre><code class="language-cpp">file-&gt;write(line,0,k);
</code></pre>
<p>Compilieren kann ich es problemlos. Das schaut für mich so aus, als würde ich versuchen , auf nicht definierte Speicherbereiche zuzugreifen aber ich weiss nicht wo mein Fehler liegt.</p>
<p>Vielleicht weiß ja von euch jemand Rat</p>
<p>Ich sag mal vielen Dank im Voraus</p>
<p>Grüße</p>
<p>Kristian</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1311075</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311075</guid><dc:creator><![CDATA[xkris]]></dc:creator><pubDate>Thu, 21 Jun 2007 21:54:28 GMT</pubDate></item><item><title><![CDATA[Reply to Pfeiloperator on Thu, 21 Jun 2007 22:17:22 GMT]]></title><description><![CDATA[<p>Du erzeugst im Konstruktor eine <strong>lokale</strong> Variable, welche nach dem Verlassen der Methode nicht mehr existiert! Daher ist der Zeiger <em>file</em> ungültig und dementsprechend kommt es zum Absturz.</p>
<p>Richtigerweise würdest du es folgender Maßen machen:</p>
<pre><code class="language-cpp">SPR(string comment, string date,char *filename)
  {
      bool s_flag=true; //error-flag für Sensor-Objekt

      G.init();

      //: falsch!
      //Data P(comment,date,filename);
      //file=&amp;P;

      //: richtig
      file = new Data(comment,date,filename);

      // ...
  }
</code></pre>
<p>Gleiches gilt wahrscheinlich auch für den Zeiger <em>sensor</em>!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1311085</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311085</guid><dc:creator><![CDATA[MAG]]></dc:creator><pubDate>Thu, 21 Jun 2007 22:17:22 GMT</pubDate></item><item><title><![CDATA[Reply to Pfeiloperator on Thu, 21 Jun 2007 22:19:25 GMT]]></title><description><![CDATA[<p>Hmm ... p ist außerhalb des Konstruktors nicht mehr vorhanden ... somit zeigt file ins nichts! Das selbe gilt für S!</p>
<pre><code class="language-cpp">class SPR
{
private:
    Goniometer m_gonio;
    Data  m_file;
    KUSB3100 m_sensor;

public:
    SPR(const std::string&amp; comment, const std::string&amp; date, const char *filename) : m_file(comment, data, filename), m_sensor(0)
    {
        m_gonio.init();
        m_sensor.init();
    }
};
</code></pre>
<p>oder</p>
<pre><code class="language-cpp">class SPR
{
private:
    Goniometer m_gonio;
    Data* m_file ;
    KUSB3100* m_sensor;

public:
    SPR(const std::string&amp; comment, const std::string&amp; date, const char* filename)
    {
        bool s_flag=true; //error-flag für Sensor-Objekt
        m_gonio.init();
        m_file = new Data(comment, date, filename);
        m_sensor = new KUSB3100(&amp;s_flag);
        m_sensor-&gt;init(0);
    }
    SPR()
    {
        delete m_file;
        delete m_sensor;
    }
};
</code></pre>
<p>...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1311087</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311087</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Thu, 21 Jun 2007 22:19:25 GMT</pubDate></item><item><title><![CDATA[Reply to Pfeiloperator on Thu, 21 Jun 2007 22:48:21 GMT]]></title><description><![CDATA[<p>Hey, das ging ja fix.<br />
Danke für die schnelle Hilfe.<br />
Was wäre eigentlich wenn ich P als static definiere? Dann müsste es ja an seinem speicherplatz verbleiben und somit müsste der Zeiger &quot;file&quot; noch darauf zeigen, auch nach verlassen der Methode.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1311093</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311093</guid><dc:creator><![CDATA[xkris]]></dc:creator><pubDate>Thu, 21 Jun 2007 22:48:21 GMT</pubDate></item><item><title><![CDATA[Reply to Pfeiloperator on Fri, 22 Jun 2007 05:02:22 GMT]]></title><description><![CDATA[<p>Ja, das stimmt. Und darüberhinaus hättest Du die Möglichkeit verspielt jemals mehr als ein SPR-Objekt parallel agieren zu lassen, da ja alle auf dieselbe static Variable zugreifen <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>Warum machst Du m_file nicht einfach zum Mitglied ohne Zeiger, wie in (D)Evils erstem Beispiel.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1311123</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311123</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Fri, 22 Jun 2007 05:02:22 GMT</pubDate></item><item><title><![CDATA[Reply to Pfeiloperator on Fri, 22 Jun 2007 16:07:19 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<p>Ja, das stimmt. Und darüberhinaus hättest Du die Möglichkeit verspielt jemals mehr als ein SPR-Objekt parallel agieren zu lassen, da ja alle auf dieselbe static Variable zugreifen <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>Warum machst Du m_file nicht einfach zum Mitglied ohne Zeiger, wie in (D)Evils erstem Beispiel.</p>
</blockquote>
<p>&quot;...da ja alle auf dieselbe static Variable zugreifen&quot; alle was?</p>
<p>Ausserdem , wenn das nicht ginge, würde das nicht auch bedeuten, dass man nach</p>
<pre><code class="language-cpp">static int ...
</code></pre>
<p>auch keine weitere integer Variable mehr deklarieren könnte?</p>
<p>So wie ich die Definition von static verstehe, bedeutet das doch nur, dass diese Speicherstelle für immer und ewig (so lange das Programm läuft) für diese Variable zur Verfügung steht. Wenn ich jetzt eine neue Variable Deklariere, sei es ein int, double oder ein Objekt einer Klasse, warum sollte die nicht einen eigenen Speicherbereich zugewiesen bekommen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1311656</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1311656</guid><dc:creator><![CDATA[xkris]]></dc:creator><pubDate>Fri, 22 Jun 2007 16:07:19 GMT</pubDate></item></channel></rss>