<?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[Verständnisproblem mit Zugriff auf Klassenelemente]]></title><description><![CDATA[<p>Tach die Herrschaften <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>ich geh grad das Buch &quot;C++ von A bis Z&quot; durch (ich weiß, das mögen von euch einige nicht^^)</p>
<p>folgender Code irritiert mich nun etwas:</p>
<pre><code class="language-cpp">/* mensch.h */
#include &lt;iostream&gt;

#ifndef _MENSCH_H_
#define _MENSCH_H_
using namespace std;

class Mensch {
	public:
		enum { MANN, FRAU };
	private:
		char name[30];
		unsigned int alter;
		bool geschlecht;
		void test_geschlecht( void );
	public:
		void erzeuge( const char *n = &quot;Unbekannt&quot;,
					  unsigned int a = 0,
					  bool g = FRAU);
}
#endif
</code></pre>
<pre><code class="language-cpp">/* main.cpp */
#include &quot;mensch.h&quot;

int main(void) {
	Mensch mann;	
	mann.erzeuge( &quot;Adam&quot;, 18, Mensch::MANN);
</code></pre>
<p>wenn ich jetzt das Objekt &quot;mann&quot; erzeuge, warum muss ich bei dem Geschlecht immernoch den Bezugsoperator und die Klasse mit angeben.<br />
--&gt;</p>
<pre><code class="language-cpp">mann.erzeuge( &quot;Adam&quot;, 18, Mensch::MANN);
</code></pre>
<p>kann ich mit den Klassenmethoden nur auf Elemente in der private-section zugreifen (weil das Geschlecht ja im public-bereich) und falls ja, wieso?</p>
<p>danke schonmal <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/209398/verständnisproblem-mit-zugriff-auf-klassenelemente</link><generator>RSS for Node</generator><lastBuildDate>Mon, 12 Oct 2026 14:46:37 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/209398.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 30 Mar 2008 11:32:21 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Verständnisproblem mit Zugriff auf Klassenelemente on Sun, 30 Mar 2008 11:32:38 GMT]]></title><description><![CDATA[<p>Tach die Herrschaften <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>ich geh grad das Buch &quot;C++ von A bis Z&quot; durch (ich weiß, das mögen von euch einige nicht^^)</p>
<p>folgender Code irritiert mich nun etwas:</p>
<pre><code class="language-cpp">/* mensch.h */
#include &lt;iostream&gt;

#ifndef _MENSCH_H_
#define _MENSCH_H_
using namespace std;

class Mensch {
	public:
		enum { MANN, FRAU };
	private:
		char name[30];
		unsigned int alter;
		bool geschlecht;
		void test_geschlecht( void );
	public:
		void erzeuge( const char *n = &quot;Unbekannt&quot;,
					  unsigned int a = 0,
					  bool g = FRAU);
}
#endif
</code></pre>
<pre><code class="language-cpp">/* main.cpp */
#include &quot;mensch.h&quot;

int main(void) {
	Mensch mann;	
	mann.erzeuge( &quot;Adam&quot;, 18, Mensch::MANN);
</code></pre>
<p>wenn ich jetzt das Objekt &quot;mann&quot; erzeuge, warum muss ich bei dem Geschlecht immernoch den Bezugsoperator und die Klasse mit angeben.<br />
--&gt;</p>
<pre><code class="language-cpp">mann.erzeuge( &quot;Adam&quot;, 18, Mensch::MANN);
</code></pre>
<p>kann ich mit den Klassenmethoden nur auf Elemente in der private-section zugreifen (weil das Geschlecht ja im public-bereich) und falls ja, wieso?</p>
<p>danke schonmal <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1483079</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1483079</guid><dc:creator><![CDATA[tridane]]></dc:creator><pubDate>Sun, 30 Mar 2008 11:32:38 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisproblem mit Zugriff auf Klassenelemente on Sun, 30 Mar 2008 11:37:53 GMT]]></title><description><![CDATA[<p>Die Parameter die du übergibst sind unabhängig, von dem Object(Klasse) an das du sie übergibst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1483084</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1483084</guid><dc:creator><![CDATA[dahu]]></dc:creator><pubDate>Sun, 30 Mar 2008 11:37:53 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisproblem mit Zugriff auf Klassenelemente on Sun, 30 Mar 2008 11:51:50 GMT]]></title><description><![CDATA[<p>Jetzt weiß ich auch, warum das Buch als schlecht angesehen wird, wenn ich nur diesen Code-Ausschnitt sehe (Oh Graus!):<br />
- niemals &quot;using namespace std&quot; in Headern<br />
- std::string statt char name[30] wäre eindeutig besser<br />
- Implizite Umwandlung eines Enums (int) nach bool<br />
(warum wird nicht der enum-Typ benannt und als Member verwendet?)<br />
- schlechter include-guard Name (Namen mit Unterstrich und anschließendem Großbuchstaben sind für den Compiler reserviert)<br />
- der include-guard sollte eigentlich ganz nach oben (nicht erst andere Header einbinden)<br />
- (void) als Parameter ist eigentlich nur in C sinnvoll, in C++: ()<br />
- ...</p>
<blockquote>
<p>kann ich mit den Klassenmethoden nur auf Elemente in der private-section zugreifen (weil das Geschlecht ja im public-bereich) und falls ja, wieso?</p>
</blockquote>
<p>Nein, innerhalb von Klassenmethoden kann auf alle drei Bereiche (public, protected und private) zugegriffen werden.<br />
Der enum ist public, damit man ihn beim Aufruf in Mensch::erzeuge(...) angeben kann.</p>
<p>Fazit: um wirklich gutes (und aktuelles) C++ zu lernen, solltest du dich vllt. nach einem anderen Buch umsehen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1483088</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1483088</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Sun, 30 Mar 2008 11:51:50 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisproblem mit Zugriff auf Klassenelemente on Sun, 30 Mar 2008 12:08:39 GMT]]></title><description><![CDATA[<p>thx für die Antworten.</p>
<p>dann werd ich den Code gleich mal dementsprechend anpassen und neu versuchen zu verstehen^^</p>
<blockquote>
<p>Fazit: um wirklich gutes (und aktuelles) C++ zu lernen, solltest du dich vllt. nach einem anderen Buch umsehen...</p>
</blockquote>
<p>wo wir grad mal dabei sind....gibt es da irgendwelche Empfehlungen von Büchern?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1483095</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1483095</guid><dc:creator><![CDATA[tridane]]></dc:creator><pubDate>Sun, 30 Mar 2008 12:08:39 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisproblem mit Zugriff auf Klassenelemente on Sun, 30 Mar 2008 13:31:00 GMT]]></title><description><![CDATA[<p>Der C++ Primer ist ganz gut für den Einstieg.</p>
<p><a href="http://www.amazon.de/C-Primer-Stanley-B-Lippman/dp/382732274X" rel="nofollow">http://www.amazon.de/C-Primer-Stanley-B-Lippman/dp/382732274X</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1483130</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1483130</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 30 Mar 2008 13:31:00 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisproblem mit Zugriff auf Klassenelemente on Sun, 30 Mar 2008 15:44:44 GMT]]></title><description><![CDATA[<p>jein, du kannst mit public fkt. auf private elemente zugreifen. andererseits kannst du die variablen auch direkt als public definieren und dann über das objekt zugreifen.<br />
das lohnt sich aber nur, wenn das variablen sind, die man sowieso public ändert. das problem dabei ist nur, dass man klassen normalerweise gekapselt anlegen sollte^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1483223</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1483223</guid><dc:creator><![CDATA[dgrat]]></dc:creator><pubDate>Sun, 30 Mar 2008 15:44:44 GMT</pubDate></item></channel></rss>