<?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[const]]></title><description><![CDATA[<p>Aus einer C-Bibliothek möchte ich eine Funktion</p>
<pre><code class="language-cpp">int foo(double* array, int n);
</code></pre>
<p>innerhalb meiner Klasse</p>
<pre><code class="language-cpp">class Klasse
{
public:
  Klasse()
  {
    n = 100;
    array = new double[n];
  }
  ~Klasse()
  {
    delete array;
  }
  int bar() const
  {
    return foo(array, n);
  }
  void fill()
  {
    // fülle array
  }
  void badeldudel()
  {
    // verändere die Größe des arrays
  }
private:
  double* array;
  int n;
};
</code></pre>
<p>Doof ist nur: Ich weiß, foo verändert den Inhalt von array nicht. Und Klasse::bar() möchte ich gerne const haben. Bekommt man das irgendwie hin, ohne die C-Bibliothek zu verändern?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/271759/const</link><generator>RSS for Node</generator><lastBuildDate>Sat, 29 Aug 2026 06:20:17 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/271759.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 03 Aug 2010 12:18:51 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to const on Tue, 03 Aug 2010 12:18:51 GMT]]></title><description><![CDATA[<p>Aus einer C-Bibliothek möchte ich eine Funktion</p>
<pre><code class="language-cpp">int foo(double* array, int n);
</code></pre>
<p>innerhalb meiner Klasse</p>
<pre><code class="language-cpp">class Klasse
{
public:
  Klasse()
  {
    n = 100;
    array = new double[n];
  }
  ~Klasse()
  {
    delete array;
  }
  int bar() const
  {
    return foo(array, n);
  }
  void fill()
  {
    // fülle array
  }
  void badeldudel()
  {
    // verändere die Größe des arrays
  }
private:
  double* array;
  int n;
};
</code></pre>
<p>Doof ist nur: Ich weiß, foo verändert den Inhalt von array nicht. Und Klasse::bar() möchte ich gerne const haben. Bekommt man das irgendwie hin, ohne die C-Bibliothek zu verändern?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1935589</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1935589</guid><dc:creator><![CDATA[badeldudel]]></dc:creator><pubDate>Tue, 03 Aug 2010 12:18:51 GMT</pubDate></item><item><title><![CDATA[Reply to const on Tue, 03 Aug 2010 12:29:30 GMT]]></title><description><![CDATA[<p>badeldudel schrieb:</p>
<blockquote>
<p>Doof ist nur: Ich weiß, foo verändert den Inhalt von array nicht. Und Klasse::bar() möchte ich gerne const haben.</p>
</blockquote>
<p>Warum versuchst du es denn nicht einfach? Das funktioniert absolut problemlos, ohne irgend etwas zu verändern!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1935592</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1935592</guid><dc:creator><![CDATA[l&#x27;abra d&#x27;or]]></dc:creator><pubDate>Tue, 03 Aug 2010 12:29:30 GMT</pubDate></item><item><title><![CDATA[Reply to const on Tue, 03 Aug 2010 12:30:30 GMT]]></title><description><![CDATA[<p>Wo ist das Problem? Das const interessiert sich nur für die Membervaribablen deiner Klasse und das ist hier ein Pointer auf double. Und es ist klar, dass foo den Wert des Ponters nicht ändert, weil er nicht per Referenz übergeben wird. Von Arrays und ihren Inhalten weiß der Compiler an dieser Stelle nichts.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1935593</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1935593</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 03 Aug 2010 12:30:30 GMT</pubDate></item><item><title><![CDATA[Reply to const on Tue, 03 Aug 2010 13:33:35 GMT]]></title><description><![CDATA[<p>Abgesehen davon, ist natürlich eine Klasse der Art</p>
<pre><code class="language-cpp">class Klasse
{
  double* ptr;
  int n;
public:
  Klasse();
  ~Klasse() {delete ptr;}
};
</code></pre>
<p>doppelt Käse. Erstmal, wäre delete[] richtig gewesen und zweitens fehlen hier ein eigener <a href="http://de.wikipedia.org/wiki/Dreierregel_%28C%2B%2B%29" rel="nofollow">Kopierkonstruktor und Zuweisungsoperator</a> -- oder zumindest ein &quot;Deaktivieren&quot; dieser.</p>
<p>Besser wär natürlich</p>
<pre><code class="language-cpp">class Klasse
{
  vector&lt;double&gt; vec;
public:
  Klasse();
  ...
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1935616</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1935616</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Tue, 03 Aug 2010 13:33:35 GMT</pubDate></item></channel></rss>