<?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[Zugriff auf private Daten von aussen]]></title><description><![CDATA[<p>Nachfolgendes Verständnisproblem:</p>
<p><strong>Header:</strong></p>
<pre><code class="language-cpp">class board_c {
public:

  inline int value_midgame(void) const {
    return value_mg;
  }

  inline int value_endgame(void) const {
    return value_eg;
  }

  // more...

  void copy(const board_c &amp; board);
  void copy(const board_c * board);

  bool is_ok(void) const;

  // more...

private:

  int value_mg;
  int value_eg;

  // more...
};
</code></pre>
<p><strong>Source:</strong></p>
<pre><code class="language-cpp">void board_c::copy(const board_c &amp; board) {
  memcpy(this, &amp;board, sizeof(board_c));
}

void board_c::copy(const board_c * board) {
  memcpy(this, board, sizeof(board_c));
}

bool board_c::is_ok(void) const {
  board_c board;

  board.copy(this);

  // Zugriff auf private Member &quot;board.value_mg&quot; erlaubt !?

  if (board.value_mg != value_mg) return false;  

  // more...

  return true;
}
</code></pre>
<p>Warum darf ich auf die private Member <code>board.value_mg</code> zugreifen?</p>
<p><strong>Danke!</strong></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/256510/zugriff-auf-private-daten-von-aussen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 11 Sep 2026 08:06:17 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/256510.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 14 Dec 2009 07:58:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zugriff auf private Daten von aussen on Mon, 14 Dec 2009 08:02:35 GMT]]></title><description><![CDATA[<p>Nachfolgendes Verständnisproblem:</p>
<p><strong>Header:</strong></p>
<pre><code class="language-cpp">class board_c {
public:

  inline int value_midgame(void) const {
    return value_mg;
  }

  inline int value_endgame(void) const {
    return value_eg;
  }

  // more...

  void copy(const board_c &amp; board);
  void copy(const board_c * board);

  bool is_ok(void) const;

  // more...

private:

  int value_mg;
  int value_eg;

  // more...
};
</code></pre>
<p><strong>Source:</strong></p>
<pre><code class="language-cpp">void board_c::copy(const board_c &amp; board) {
  memcpy(this, &amp;board, sizeof(board_c));
}

void board_c::copy(const board_c * board) {
  memcpy(this, board, sizeof(board_c));
}

bool board_c::is_ok(void) const {
  board_c board;

  board.copy(this);

  // Zugriff auf private Member &quot;board.value_mg&quot; erlaubt !?

  if (board.value_mg != value_mg) return false;  

  // more...

  return true;
}
</code></pre>
<p>Warum darf ich auf die private Member <code>board.value_mg</code> zugreifen?</p>
<p><strong>Danke!</strong></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1822197</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1822197</guid><dc:creator><![CDATA[Tomahawk]]></dc:creator><pubDate>Mon, 14 Dec 2009 08:02:35 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf private Daten von aussen on Mon, 14 Dec 2009 08:10:34 GMT]]></title><description><![CDATA[<p>private begrenzt den Zugriff auf <em>Klassen</em>scope. Sprich: alle Instanzen einer Klasse haben Zugriff auf die privaten Elemente. Nicht nur <code>this</code> .</p>
<p>PS: <code>memcpy</code> ist keine gute Idee...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1822203</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1822203</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Mon, 14 Dec 2009 08:10:34 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf private Daten von aussen on Mon, 14 Dec 2009 08:13:51 GMT]]></title><description><![CDATA[<p>Danke, wusste ich nicht!</p>
<p>Warum ist <code>memcpy</code> keine gute Idee? Bisher gabs keine Probleme. Welche Möglichkeit schlägst Du vor?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1822205</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1822205</guid><dc:creator><![CDATA[Tomahawk]]></dc:creator><pubDate>Mon, 14 Dec 2009 08:13:51 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf private Daten von aussen on Mon, 14 Dec 2009 08:46:12 GMT]]></title><description><![CDATA[<p>Wenn Deine Klasse so trivial ist, dass memcpy funktioniert, dann kannst Du genauso gut direkt den Copy-Constructor/Assignment-Operator benutzen, den der Compiler die generiert:</p>
<pre><code class="language-cpp">board_c board1;
board_c board2(board1); //copy constructor
board_c board3 = baord1; //ebenfalls aber implizite form

board2 = board3; //operator=
</code></pre>
<p>Die Sachen werden, wie gesagt, alle vom Compiler für Dich generiert.</p>
<p>memcpy geht z.B. nicht mehr, wenn Deine Klasse selbst Klassen als Member hat, weil deren Konstruktor nicht aufgerufen wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1822212</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1822212</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Mon, 14 Dec 2009 08:46:12 GMT</pubDate></item></channel></rss>