<?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[return der get-methode ist leer]]></title><description><![CDATA[<p>Ich will mir einen string von der Tastatur einlesen und diesen dann zum erzeugen eiens Objektes benutzen, allerdings liefert mir meine getName() Methode nur heiße luft wieder.</p>
<p>Hab im Source mal ein paar Bemerkungen gemacht.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;sstream&gt;
#include &lt;fstream&gt;
#include &lt;string&gt;
#include &lt;ctime&gt;
#include &lt;time.h&gt;
#include &quot;Datum.h&quot;
#include &quot;Member.h&quot;

std::string name, gebDatum;
std::stringstream stream;
int jr=0, mn=0, tg=0, id = 0;

void write(Member );

int main()
{
    id++;

    std::cout&lt;&lt;&quot;Geben Sie bitten den Namen des anzulegenden Mitglieds an&quot;&lt;&lt;std::endl;
    std::getline(std::cin, name);

    std::cout&lt;&lt;&quot;Geben Sie das Geburtsdatum der Person im Format TT.MM.JJJJ an&quot;&lt;&lt;std::endl;

    char pkt;

    std::cin&gt;&gt;tg&gt;&gt;pkt&gt;&gt;mn&gt;&gt;pkt&gt;&gt;jr;

    std::cout&lt;&lt;&quot;Member Name: &quot;&lt;&lt;name&lt;&lt;&quot;\n\n\n&quot;;  &lt;------------------ Hier ist der Name noch gefüllt
    if(checkDatum(tg, mn, jr))
    {
    std::cout&lt;&lt;&quot;Member Name: &quot;&lt;&lt;name&lt;&lt;&quot;\n\n\n&quot;;&lt;------------------ Hier ist der Name auch noch gefüllt
    Member b( id, name, tg, mn, jr);
    std::cout&lt;&lt;&quot;Member Name: &quot;&lt;&lt;b.getName()&lt;&lt;&quot;\n\n\n&quot;;&lt;------------------ Nach der Erzeugung das Objekts kann ich über meine getName Methode den namen nicht mehr holen

    write(b);

    //std::cout&lt;&lt;b.getGeb();
    }
    else{
       std::cout&lt;&lt;&quot;Datumspruefung fehlerhaft&quot;&lt;&lt;std::endl;
    }

    return 0;
}
void write(Member i_member){

    std::fstream file;
    file.open(&quot;ausgabe.txt&quot;, std::ios::out);
    std::cout&lt;&lt;i_member.getName();
    //file &lt;&lt; &quot;Hello&quot;;

    std::cout&lt;&lt;&quot;Member Name: &quot;&lt;&lt;i_member.getName();

    file&lt;&lt;i_member.getName()&lt;&lt;std::endl;
    file.close();

}
</code></pre>
<p>Meine Member Klasse:</p>
<pre><code class="language-cpp">class Member
{
    private:
    long id;
    std::string name;
    Datum geb;

    public:
    Member(long , std::string , int, int, int);
    ~Member() {}
    long getId() const {return id;}
    std::string getName() {return name;}
    std::string getGeb() { return geb.getDatum();}

    inline bool setName(std::string&amp; i_name){

        if(i_name.size() &gt; 1)
                return true;
        else
        return false;

    }

};

Member::Member(long i_id, std::string i_name, int tg, int mn, int jr): id(i_id), geb(tg,mn,jr)
{
    std::cout&lt;&lt;&quot;Member Konstruktor&quot;&lt;&lt;std::endl;

    if (!setName(i_name))
    i_name = &quot;How knows&quot;;

}
</code></pre>
<p>Meine Datumsklasse:</p>
<pre><code class="language-cpp">class Datum{
    private:
        int tag;
        int monat;
        int jahr;

    public:

        Datum(int, int, int);
        ~Datum(){}

        void setDatum(int tg, int mn, int jr);
        std::string getDatum();

        //Prüft ob das Jahr ein schaltjahr ist
        bool checkYear(int &amp;);
        //Prüfen ob ein gültiges Datum eingegeben wurde
        static bool checkDatum(int &amp;, int &amp;, int &amp;);

};

Datum::Datum(int tg, int mn, int jr)
{
    std::cout&lt;&lt;&quot;Datum Konstruktor&quot;&lt;&lt;std::endl;
    tag = tg;
    monat = mn;
    jahr = jr;
}

void Datum::setDatum(int tg, int mn, int jr)
{
    tag = tg;
    monat = mn;
    jahr = jr;
}

std::string Datum::getDatum()
{
    std::string back;
    std::stringstream temp;
    temp&lt;&lt;tag&lt;&lt; '.'&lt;&lt;monat&lt;&lt;'.' &lt;&lt;jahr;

    //schieben des Stringstreams in den Rückgabe-String
    temp&gt;&gt;back;
    return back;
}

bool checkYear(int jr)
{
    char jahr[10];
    std::stringstream tempss;
    std::string tempst;
    tempss &lt;&lt; jr;

    tempss &gt;&gt; tempst;

    if (tempst.size() != 4 || tempst.substr(0,1) &gt; &quot;2&quot; )
    {
        return false;
        std::cout&lt;&lt;&quot;Jahr bitte 4 - Stellig angeben&quot;;
    }

    if(jr%400 == 0 &amp;&amp; jr %4 == 0)
    {
        return true;
    }
    else
        return false;
}

static bool checkDatum(int tg, int mn, int jr)
{

    if (tg &lt; 1 || tg &gt; 31){return false;}
    if (mn &lt; 1 || mn &gt; 12){return false;}

    switch(mn)
    {
        case 2:
                if (checkYear(jr))
                {
                    if (tg &gt; 29)
                        return false;
                }
                    else if (tg &gt; 28)
                {
                    return false;
                }
                break;
        case 11:
                if (tg &gt; 30)
                    return false;
                    break;
    }

    return true;

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/130420/return-der-get-methode-ist-leer</link><generator>RSS for Node</generator><lastBuildDate>Wed, 26 Aug 2026 14:44:00 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/130420.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 22 Dec 2005 18:59:26 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to return der get-methode ist leer on Thu, 22 Dec 2005 18:59:26 GMT]]></title><description><![CDATA[<p>Ich will mir einen string von der Tastatur einlesen und diesen dann zum erzeugen eiens Objektes benutzen, allerdings liefert mir meine getName() Methode nur heiße luft wieder.</p>
<p>Hab im Source mal ein paar Bemerkungen gemacht.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;sstream&gt;
#include &lt;fstream&gt;
#include &lt;string&gt;
#include &lt;ctime&gt;
#include &lt;time.h&gt;
#include &quot;Datum.h&quot;
#include &quot;Member.h&quot;

std::string name, gebDatum;
std::stringstream stream;
int jr=0, mn=0, tg=0, id = 0;

void write(Member );

int main()
{
    id++;

    std::cout&lt;&lt;&quot;Geben Sie bitten den Namen des anzulegenden Mitglieds an&quot;&lt;&lt;std::endl;
    std::getline(std::cin, name);

    std::cout&lt;&lt;&quot;Geben Sie das Geburtsdatum der Person im Format TT.MM.JJJJ an&quot;&lt;&lt;std::endl;

    char pkt;

    std::cin&gt;&gt;tg&gt;&gt;pkt&gt;&gt;mn&gt;&gt;pkt&gt;&gt;jr;

    std::cout&lt;&lt;&quot;Member Name: &quot;&lt;&lt;name&lt;&lt;&quot;\n\n\n&quot;;  &lt;------------------ Hier ist der Name noch gefüllt
    if(checkDatum(tg, mn, jr))
    {
    std::cout&lt;&lt;&quot;Member Name: &quot;&lt;&lt;name&lt;&lt;&quot;\n\n\n&quot;;&lt;------------------ Hier ist der Name auch noch gefüllt
    Member b( id, name, tg, mn, jr);
    std::cout&lt;&lt;&quot;Member Name: &quot;&lt;&lt;b.getName()&lt;&lt;&quot;\n\n\n&quot;;&lt;------------------ Nach der Erzeugung das Objekts kann ich über meine getName Methode den namen nicht mehr holen

    write(b);

    //std::cout&lt;&lt;b.getGeb();
    }
    else{
       std::cout&lt;&lt;&quot;Datumspruefung fehlerhaft&quot;&lt;&lt;std::endl;
    }

    return 0;
}
void write(Member i_member){

    std::fstream file;
    file.open(&quot;ausgabe.txt&quot;, std::ios::out);
    std::cout&lt;&lt;i_member.getName();
    //file &lt;&lt; &quot;Hello&quot;;

    std::cout&lt;&lt;&quot;Member Name: &quot;&lt;&lt;i_member.getName();

    file&lt;&lt;i_member.getName()&lt;&lt;std::endl;
    file.close();

}
</code></pre>
<p>Meine Member Klasse:</p>
<pre><code class="language-cpp">class Member
{
    private:
    long id;
    std::string name;
    Datum geb;

    public:
    Member(long , std::string , int, int, int);
    ~Member() {}
    long getId() const {return id;}
    std::string getName() {return name;}
    std::string getGeb() { return geb.getDatum();}

    inline bool setName(std::string&amp; i_name){

        if(i_name.size() &gt; 1)
                return true;
        else
        return false;

    }

};

Member::Member(long i_id, std::string i_name, int tg, int mn, int jr): id(i_id), geb(tg,mn,jr)
{
    std::cout&lt;&lt;&quot;Member Konstruktor&quot;&lt;&lt;std::endl;

    if (!setName(i_name))
    i_name = &quot;How knows&quot;;

}
</code></pre>
<p>Meine Datumsklasse:</p>
<pre><code class="language-cpp">class Datum{
    private:
        int tag;
        int monat;
        int jahr;

    public:

        Datum(int, int, int);
        ~Datum(){}

        void setDatum(int tg, int mn, int jr);
        std::string getDatum();

        //Prüft ob das Jahr ein schaltjahr ist
        bool checkYear(int &amp;);
        //Prüfen ob ein gültiges Datum eingegeben wurde
        static bool checkDatum(int &amp;, int &amp;, int &amp;);

};

Datum::Datum(int tg, int mn, int jr)
{
    std::cout&lt;&lt;&quot;Datum Konstruktor&quot;&lt;&lt;std::endl;
    tag = tg;
    monat = mn;
    jahr = jr;
}

void Datum::setDatum(int tg, int mn, int jr)
{
    tag = tg;
    monat = mn;
    jahr = jr;
}

std::string Datum::getDatum()
{
    std::string back;
    std::stringstream temp;
    temp&lt;&lt;tag&lt;&lt; '.'&lt;&lt;monat&lt;&lt;'.' &lt;&lt;jahr;

    //schieben des Stringstreams in den Rückgabe-String
    temp&gt;&gt;back;
    return back;
}

bool checkYear(int jr)
{
    char jahr[10];
    std::stringstream tempss;
    std::string tempst;
    tempss &lt;&lt; jr;

    tempss &gt;&gt; tempst;

    if (tempst.size() != 4 || tempst.substr(0,1) &gt; &quot;2&quot; )
    {
        return false;
        std::cout&lt;&lt;&quot;Jahr bitte 4 - Stellig angeben&quot;;
    }

    if(jr%400 == 0 &amp;&amp; jr %4 == 0)
    {
        return true;
    }
    else
        return false;
}

static bool checkDatum(int tg, int mn, int jr)
{

    if (tg &lt; 1 || tg &gt; 31){return false;}
    if (mn &lt; 1 || mn &gt; 12){return false;}

    switch(mn)
    {
        case 2:
                if (checkYear(jr))
                {
                    if (tg &gt; 29)
                        return false;
                }
                    else if (tg &gt; 28)
                {
                    return false;
                }
                break;
        case 11:
                if (tg &gt; 30)
                    return false;
                    break;
    }

    return true;

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/948061</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/948061</guid><dc:creator><![CDATA[Souljumper]]></dc:creator><pubDate>Thu, 22 Dec 2005 18:59:26 GMT</pubDate></item><item><title><![CDATA[Reply to return der get-methode ist leer on Thu, 22 Dec 2005 19:22:04 GMT]]></title><description><![CDATA[<p>Souljumper schrieb:</p>
<blockquote>
<p>Ich will mir einen string von der Tastatur einlesen und diesen dann zum erzeugen eiens Objektes benutzen, allerdings liefert mir meine getName() Methode nur heiße luft wieder.</p>
</blockquote>
<p>da du Member::name nie initialisierst oder zuweist, ist das auch kein wunder.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/948082</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/948082</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Thu, 22 Dec 2005 19:22:04 GMT</pubDate></item><item><title><![CDATA[Reply to return der get-methode ist leer on Thu, 22 Dec 2005 20:34:30 GMT]]></title><description><![CDATA[<p>? ok, was genau mache ich dann hier <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<pre><code class="language-cpp">std::cout&lt;&lt;&quot;Geben Sie bitten den Namen des anzulegenden Mitglieds an&quot;&lt;&lt;std::endl;
    std::getline(std::cin, name);
</code></pre>
<p>oder wie sähe es richtig aus?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/948118</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/948118</guid><dc:creator><![CDATA[Souljumper]]></dc:creator><pubDate>Thu, 22 Dec 2005 20:34:30 GMT</pubDate></item><item><title><![CDATA[Reply to return der get-methode ist leer on Thu, 22 Dec 2005 22:09:07 GMT]]></title><description><![CDATA[<p>Souljumper schrieb:</p>
<blockquote>
<p>? ok, was genau mache ich dann hier <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<pre><code class="language-cpp">std::cout&lt;&lt;&quot;Geben Sie bitten den Namen des anzulegenden Mitglieds an&quot;&lt;&lt;std::endl;
    std::getline(std::cin, name);
</code></pre>
</blockquote>
<p>Hier ließt du eine Zeile von der Tastatur in das Objekt name vom Typ std::string. Das ist soweit korrekt.</p>
<p>Was camper aber meinte, ist, dass du das Objekt name innerhalb deines Klasse Member nirgendwo initialisierst. Sprich, du weißt zwar im Ctor von Member allen anderen Datenelementen Werte zu, nur eben dem Objekt name nicht.</p>
<p>Korrekt wäre es z.B. so:</p>
<pre><code class="language-cpp">Member::Member(long i_id, std::string i_name, int tg, int mn, int jr): id(i_id), name(i_name), geb(tg,mn,jr)
{
    std::cout&lt;&lt;&quot;Member Konstruktor&quot;&lt;&lt;std::endl;

    if (!setName(name))
    name = &quot;How knows&quot;;

}
</code></pre>
<p>Wobei der Ctor in diesem Zustand nicht wirklich performant ist...</p>
<p>Gruß Caipi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/948182</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/948182</guid><dc:creator><![CDATA[Caipi]]></dc:creator><pubDate>Thu, 22 Dec 2005 22:09:07 GMT</pubDate></item><item><title><![CDATA[Reply to return der get-methode ist leer on Fri, 23 Dec 2005 07:22:46 GMT]]></title><description><![CDATA[<p>Und die Methode setName() tut bei weitem nicht das, was von ihr erwartet wird - die prüft lediglich, ob der übergebene Name mehr als ein Zeichen enthält.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/948287</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/948287</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 23 Dec 2005 07:22:46 GMT</pubDate></item></channel></rss>