<?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[OOP Newbie&#x2F; std::string&#x27; to &#96;double&#x27; in return]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich erhalte beim kompilieren immer folgende Fehler: (Zeile 23)<br />
OOP.cpp cannot convert `std::string' to `double' in return</p>
<p>Habe die Qulltext aus einen Übungsbuch abgetippt. Bin etwas verwundert, dass dort Fehler drinnen sind.</p>
<pre><code class="language-cpp">#include&lt;iostream&gt;
#include&lt;string&gt;

using namespace std;

class Angestellter
{
private:
        string m_Nachname;
        string m_Vorname;
        string m_Brutto;

public:
       double ZeigBrutto();
       void SetzeBrutto(double neuBrutto);
       Angestellter(string nachame, string vorname, double brutto);
       ~Angestellter();
};
//______________________________________________________________________________________
double Angestellter::ZeigBrutto()
{
       return m_Brutto;
}

void Angestellter::SetzeBrutto(double neuBrutto)
{
     m_Brutto=neuBrutto;
}

Angestellter::Angestellter(string nachname, string vorname, double brutto)
{
                                  m_Nachname = nachname;
                                  m_Vorname = vorname;
                                  m_Brutto = brutto;
}

Angestellter::~Angestellter()
{
}
//_______________________________________________________________________________________

int main()
{
   double Bruttolohn;
   Angestellter Angestellter1(&quot;Meier&quot;, &quot;Franz&quot;, 2000.0);
   Bruttolohn = Angestellter1.ZeigBrutto();
   cout &lt;&lt; &quot;Bruttolohn:&quot; &lt;&lt; Bruttolohn &lt;&lt;endl;
   Angestellter1.SetzeBrutto(3000.0);
   Bruttolohn = Angestellter1.ZeigBrutto();
   cout &lt;&lt; &quot;Bruttolohn:&quot; &lt;&lt; Bruttolohn &lt;&lt;endl;
   system (&quot;PAUSE&quot;);
   return 0;
}
</code></pre>
<p>Kann jemand weiterhelfen?!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/228614/oop-newbie-std-string-to-double-in-return</link><generator>RSS for Node</generator><lastBuildDate>Mon, 28 Sep 2026 08:22:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/228614.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 30 Nov 2008 17:28:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to OOP Newbie&#x2F; std::string&#x27; to &#96;double&#x27; in return on Sun, 30 Nov 2008 17:28:25 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich erhalte beim kompilieren immer folgende Fehler: (Zeile 23)<br />
OOP.cpp cannot convert `std::string' to `double' in return</p>
<p>Habe die Qulltext aus einen Übungsbuch abgetippt. Bin etwas verwundert, dass dort Fehler drinnen sind.</p>
<pre><code class="language-cpp">#include&lt;iostream&gt;
#include&lt;string&gt;

using namespace std;

class Angestellter
{
private:
        string m_Nachname;
        string m_Vorname;
        string m_Brutto;

public:
       double ZeigBrutto();
       void SetzeBrutto(double neuBrutto);
       Angestellter(string nachame, string vorname, double brutto);
       ~Angestellter();
};
//______________________________________________________________________________________
double Angestellter::ZeigBrutto()
{
       return m_Brutto;
}

void Angestellter::SetzeBrutto(double neuBrutto)
{
     m_Brutto=neuBrutto;
}

Angestellter::Angestellter(string nachname, string vorname, double brutto)
{
                                  m_Nachname = nachname;
                                  m_Vorname = vorname;
                                  m_Brutto = brutto;
}

Angestellter::~Angestellter()
{
}
//_______________________________________________________________________________________

int main()
{
   double Bruttolohn;
   Angestellter Angestellter1(&quot;Meier&quot;, &quot;Franz&quot;, 2000.0);
   Bruttolohn = Angestellter1.ZeigBrutto();
   cout &lt;&lt; &quot;Bruttolohn:&quot; &lt;&lt; Bruttolohn &lt;&lt;endl;
   Angestellter1.SetzeBrutto(3000.0);
   Bruttolohn = Angestellter1.ZeigBrutto();
   cout &lt;&lt; &quot;Bruttolohn:&quot; &lt;&lt; Bruttolohn &lt;&lt;endl;
   system (&quot;PAUSE&quot;);
   return 0;
}
</code></pre>
<p>Kann jemand weiterhelfen?!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1623409</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1623409</guid><dc:creator><![CDATA[zuzu]]></dc:creator><pubDate>Sun, 30 Nov 2008 17:28:25 GMT</pubDate></item><item><title><![CDATA[Reply to OOP Newbie&#x2F; std::string&#x27; to &#96;double&#x27; in return on Sun, 30 Nov 2008 17:32:06 GMT]]></title><description><![CDATA[<p>Schau mal in der FAQ nach &quot;String nach Zahl und zurück&quot; oder so ähnlich. Merkwürdig ist das schon, was ist das denn für ein Buch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1623415</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1623415</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Sun, 30 Nov 2008 17:32:06 GMT</pubDate></item><item><title><![CDATA[Reply to OOP Newbie&#x2F; std::string&#x27; to &#96;double&#x27; in return on Sun, 30 Nov 2008 17:35:45 GMT]]></title><description><![CDATA[<p>zuzu schrieb:</p>
<blockquote>
<p>Hallo,</p>
<pre><code class="language-cpp">class Angestellter
{

        
public:
       // Nebenbei: string nachame gewollt? ist in der definition anders
       Angestellter(string nachame, string vorname, double brutto);

};
</code></pre>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1623418</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1623418</guid><dc:creator><![CDATA[XHansWurstX]]></dc:creator><pubDate>Sun, 30 Nov 2008 17:35:45 GMT</pubDate></item><item><title><![CDATA[Reply to OOP Newbie&#x2F; std::string&#x27; to &#96;double&#x27; in return on Sun, 30 Nov 2008 17:37:29 GMT]]></title><description><![CDATA[<p>Wenn du dir den Fehler mal genau durchliest, solltest du es verstehen. Wie soll eine Funktion die double zurückgeben soll, eine Variable vom Typ string zurückgeben?</p>
<pre><code class="language-cpp">...
private:
        string m_Brutto; //m_Brutto ist vom Typ string

public:
       double ZeigBrutto(); //ZeigBrutto soll double zurückgeben
...
double Angestellter::ZeigBrutto() const //hier kannst du noch const dahinter setzen,
//da es nur eine return methode ist und nichts verändert wird 
{
       return m_Brutto; //double als Rückgabe erwartet, aber string gegeben
}
...
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1623419</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1623419</guid><dc:creator><![CDATA[freaky]]></dc:creator><pubDate>Sun, 30 Nov 2008 17:37:29 GMT</pubDate></item><item><title><![CDATA[Reply to OOP Newbie&#x2F; std::string&#x27; to &#96;double&#x27; in return on Sun, 30 Nov 2008 17:43:29 GMT]]></title><description><![CDATA[<p>ach wie dumm von mir!</p>
<p>Danke!</p>
<pre><code class="language-cpp">class Angestellter
{
private:
        string m_Nachname;
        string m_Vorname;
        double m_Brutto;
</code></pre>
<p>so gehts!</p>
<p>super vielen dank!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1623424</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1623424</guid><dc:creator><![CDATA[zuzu]]></dc:creator><pubDate>Sun, 30 Nov 2008 17:43:29 GMT</pubDate></item><item><title><![CDATA[Reply to OOP Newbie&#x2F; std::string&#x27; to &#96;double&#x27; in return on Mon, 01 Dec 2008 17:54:11 GMT]]></title><description><![CDATA[<p>habe noch einmal ein paar Fragen zum Programm.</p>
<pre><code class="language-cpp">class Angestellter
{
private:
        string m_Nachname;
        string m_Vorname;
        string m_Brutto;

public:
       double ZeigBrutto();
       void SetzeBrutto(double neuBrutto);
       Angestellter(string nachame, string vorname, double brutto);
       ~Angestellter();
};
</code></pre>
<p>könnte mir von euch jemand mal diesen abschnitt ewas erklären was nämlich nicht genau was dort abgeht.</p>
<p>was mit klar ist, ist, dass eine klasse mit namen angestellter erzeugt wird.</p>
<p>diese klasse besitzt untr private die attribute: string m_Nachname, string m_Vorname, string m_Brutto. sind atributte immer eigenschaften die die klasse beinhalten soll?</p>
<p>am wenigsten verstehe ich alles was nter publich steht. dort werden laut meinen buch die methoden erzeugt. diese methoden können in irgend einer form die atributte verändern. naja aber was heißt das genau?<br />
außerdem verstehe ich nicht warum hinter double ZeigBrutto(); eine klammer steht?<br />
wie ist das mit void zu verstehen und warum steht hinter void eine klammer mit einen neuen variablen?<br />
des weiteren, warum wird als nächtes die klasse oder anderes gesagt der konstruktor aufgerufen der noch fast die gleichen variabeln beinhaltet wie unter private?</p>
<p>???</p>
<p>biite hilf mir!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1623916</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1623916</guid><dc:creator><![CDATA[zuzu]]></dc:creator><pubDate>Mon, 01 Dec 2008 17:54:11 GMT</pubDate></item><item><title><![CDATA[Reply to OOP Newbie&#x2F; std::string&#x27; to &#96;double&#x27; in return on Mon, 01 Dec 2008 18:10:30 GMT]]></title><description><![CDATA[<p>Alsooo ...<br />
Nur die Methoden deiner Klasse, haben Zugriff auf die Attribute deiner Klasse. Man kann von außen nicht draufzugreifen und nicht verändern, da sie &quot;private&quot; sind. Die Methoden werden meistens &quot;public&quot; gemacht, d.h. du kannst von außen eine Methode dieser Klasse aufrufen. Mit</p>
<pre><code class="language-cpp">double ZeigBrutto();
</code></pre>
<p>machst du vorerst bekannt, dass diese Klasse eine Methode namens ZeigBrutto mit dem Rückgabetyp &quot;double&quot; besitzt. Warum da jetzt 2 Klammern sind ist ganz klar, deine Methode brauch auch eine Parameterliste. Hättest du z.B. jetzt eine Variable die dieser Methode übergeben werden muss, könnte das ganze auch so aussehen</p>
<pre><code class="language-cpp">double ZeigBrutto(int uebergebene_zahl);
</code></pre>
<p>Wenn du sie jetzt deklarierst, musst du sie auch woanders definieren. Deine Methode steht also entweder in der Header-Datei unter der Klasse oder in einer Cpp Datei und sieht so aus</p>
<pre><code class="language-cpp">double Angesteller::ZeigBrutto()
{
    ...
}
</code></pre>
<p>Hier wird dem Compiler gesagt, dass ZeigBrutto() eine Methode der Klasse &quot;Angesteller&quot; ist mit den zwei &quot;::&quot;. Der Konstruktor wird aufgerufen, sobald ein Objekt dieser Klasse erstellt wird.</p>
<pre><code class="language-cpp">Angestellter as;
</code></pre>
<p>Wenn du das gemacht hast, wird der Konstruktor aufgerufen, der meistens benutzt wird um einige attribute auf einen bestimmten Wert zu setzen, da du in der Klasse z.B. sowas nicht machen kannst.</p>
<pre><code class="language-cpp">class Klasse
{
    private:
        int zahl = 50;
        bool boolean = true;
};
</code></pre>
<p>&quot;Angesteller&quot; ist die Klasse und &quot;as&quot; das Objekt, womit gearbeitet wird. Somit kannst du nun z.B. die &quot;ZeigBrutto&quot; Methode aufrufen und das von außen, da sie public ist.</p>
<pre><code class="language-cpp">as.ZeigBrutto();
</code></pre>
<p>&quot;void&quot; musst du vor eine Methode oder Funktion schreiben wenn kein Typ zurückgegeben wird, damit ist das &quot;return&quot; gemeint. Du hast sicherlich schonmal am Ende einer Funktion</p>
<pre><code class="language-cpp">return irgendeine_variable;
</code></pre>
<p>gesehen. Wenn du eine Zahl vom Typ Integer zurückgeben willst, muss deine Methode oder deine Funktion vom Typ Integer sein und &quot;int&quot; muss vor der Methode oder Funktion stehen. Gibst du aber nichts zurück, machst du das mit &quot;void&quot; klar. Z.B. wenn du aus einer Funktion eine andere aufrufst und die andere Funktion nicht mehr verwendest, sozusagen auf eine andere Funktion springst und somit nichts zurückgeben musst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1623926</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1623926</guid><dc:creator><![CDATA[freaky]]></dc:creator><pubDate>Mon, 01 Dec 2008 18:10:30 GMT</pubDate></item><item><title><![CDATA[Reply to OOP Newbie&#x2F; std::string&#x27; to &#96;double&#x27; in return on Mon, 01 Dec 2008 20:34:35 GMT]]></title><description><![CDATA[<p>wow! vielen dank für die schnelle und ausführliche antwort!</p>
<p>muss aber ganz ehrlich sagem dass ich noch ein paar fragen habe.</p>
<p>derzeit arbeite ich so, dass ich einfach hinter allen methoden eine () setze.<br />
was genau ist mit Parameterliste gemeint?</p>
<p>Außerdem wäre es sehr nett wenn du mir noch einmal innerhlab der klasse den konstruktor genauer erklären könntest also:</p>
<pre><code class="language-cpp">Angestellter(string nachame, string vorname, double brutto)
;
</code></pre>
<p>des weiteren verstehe ich nicht warum ich einfach ein void setzen muss wenn keine werte übergeben werden sollen. in meinen programm wird doch ein wert übergeben und zwar m_brutto</p>
<pre><code class="language-cpp">void Angestellter::SetzeBrutto(double neuBrutto)
{
     m_Brutto=neuBrutto*1.1;
}
</code></pre>
<p>sorry, dass ich nerve aber ist wirklich wichtig!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1623974</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1623974</guid><dc:creator><![CDATA[zuzu]]></dc:creator><pubDate>Mon, 01 Dec 2008 20:34:35 GMT</pubDate></item><item><title><![CDATA[Reply to OOP Newbie&#x2F; std::string&#x27; to &#96;double&#x27; in return on Mon, 01 Dec 2008 20:35:37 GMT]]></title><description><![CDATA[<p>es würde mir auch helfen wenn dur mir innerhalb des quellcodes ganz genau beschreiben könntest was dort eigentlich passiert. ich hoffe, dass ist nicht zuviel verlangt <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1623975</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1623975</guid><dc:creator><![CDATA[zuzu]]></dc:creator><pubDate>Mon, 01 Dec 2008 20:35:37 GMT</pubDate></item><item><title><![CDATA[Reply to OOP Newbie&#x2F; std::string&#x27; to &#96;double&#x27; in return on Mon, 01 Dec 2008 20:58:15 GMT]]></title><description><![CDATA[<p>Na eben, void heisst indem Sinne soviel wie &quot;nichts&quot;. Es wird nichts zurückgegeben und das wird einfach klar gemacht, einfach zur Übersicht und das der Compiler weiss das diese Funktion nichts zurückgeben muss. Wir reden nicht von ÜBERgeben, sondern ZURÜCKgeben. Für das Übergeben sorgt die Parameterliste, also das innerhalb von (...). Die Rückgabe ist das vor dem Funktionsnamen. Das du momentan bei jeder Methode mit () arbeitest, muss nicht weiter schlimm sein. Des öfteren habe ich das auch. Ich mache dir einfach mal ein kleines Beispiel, wie man mit dem Konstruktor arbeiten könnte.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt; //sollteste wissen :P

class Klasse //eine Klasse namens Klasse
{
    private: //private Attribute
        int zahl; //privates Attribut vom Typ int
        std::string satz; //privates Attribut vom Typ string
    public: //öffentliche Attribute
        Klasse() : zahl(50), satz(&quot;Foo Bar!&quot;) {} //Konstruktor mit Intialisierungsliste, der die Attribute
                                                 //zahl und satz auf einen bestimmten Wert setzt, wenn ein Objekt der Klasse erstellt wurde

        void ausgabe_von_attributen() const //Ausgabemethode der Attribute
        {
            std::cout &lt;&lt; zahl &lt;&lt; &quot; &quot; &lt;&lt; satz;
        }
};

int main()
{
    Klasse k; //Objekt wird erstellt und somit der Konstruktor ausgeführt
    k.ausgabe_von_attributen(); // Ausgabemethode wird ausgeführt
}
</code></pre>
<p>So wofür jetzt den Konstruktor benutzen ? Du kannst in einer Klasse keine Variablen definieren, höchstens in einer Methode, aber du kannst die Variablen zahl und satz nicht schon vorher definieren. Dafür nehmen wir also den Konstruktor und setzen diese Attribute auf einen bestimmten Wert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1623981</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1623981</guid><dc:creator><![CDATA[freaky]]></dc:creator><pubDate>Mon, 01 Dec 2008 20:58:15 GMT</pubDate></item><item><title><![CDATA[Reply to OOP Newbie&#x2F; std::string&#x27; to &#96;double&#x27; in return on Mon, 01 Dec 2008 21:15:18 GMT]]></title><description><![CDATA[<p>ach du kacke.</p>
<p>innerhalb dieses quellcodes tauchen viele dinge auf die ich noch nicht hatte. ich will dich nicht von wichtigeren dingen deines lebens abhalten aber besteht eventuell die möglichkeit, dass du mir den ablauf an meinen code erklärst?!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1623990</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1623990</guid><dc:creator><![CDATA[zuzu]]></dc:creator><pubDate>Mon, 01 Dec 2008 21:15:18 GMT</pubDate></item><item><title><![CDATA[Reply to OOP Newbie&#x2F; std::string&#x27; to &#96;double&#x27; in return on Mon, 01 Dec 2008 21:23:56 GMT]]></title><description><![CDATA[<p>zuzu schrieb:</p>
<blockquote>
<p>innerhalb dieses quellcodes tauchen viele dinge auf die ich noch nicht hatte. [...] aber besteht eventuell die möglichkeit, dass du mir den ablauf an meinen code erklärst?!</p>
</blockquote>
<p>Was vestehst du denn konkret nicht? Schau dir vielleicht einmal an, was Klassen sind. Das kann man nämlich nicht in zwei Sätzen erklären...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1623995</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1623995</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 01 Dec 2008 21:23:56 GMT</pubDate></item><item><title><![CDATA[Reply to OOP Newbie&#x2F; std::string&#x27; to &#96;double&#x27; in return on Mon, 01 Dec 2008 21:24:01 GMT]]></title><description><![CDATA[<p>Wie hast du die ganze Zeit gelernt? Weil du solltest dich vielleicht mal mit den Basics der OOP in C++ gründlich befassen. Alles erklären kann man nicht, vieles muss man durch Eigeninitiative erlernen sonst fruchtet das alles gar nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1623996</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1623996</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Mon, 01 Dec 2008 21:24:01 GMT</pubDate></item><item><title><![CDATA[Reply to OOP Newbie&#x2F; std::string&#x27; to &#96;double&#x27; in return on Mon, 01 Dec 2008 22:15:41 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include&lt;iostream&gt;
#include&lt;string&gt;

using namespace std;

class Angestellter
{
private:
        string m_Nachname; //Attribute
        string m_Vorname;
        double m_Brutto;

public:
       double ZeigBrutto(); //gibt den Wert des Attributs m_Brutto zurück
       void SetzeBrutto(double neuBrutto); //setzt einen neuen Wert für Brutto von der main aus
                                           //in diesem Falle z.B. auf 3000
       Angestellter(string nachame, string vorname, double brutto); //Konstruktor der den
                                                                    //Attributen einen Wert zuweist
       ~Angestellter(); //destruktor noch nicht notwendig
};
//______________________________________________________________________________________
double Angestellter::ZeigBrutto() const //diese Methode kann const gesetzt werden, da sie nichts
{                                       //verändert
       return m_Brutto; //diese Methode ermöglicht einen kleinen Zugriff auf das private Attribut
                        //m_Brutto
                        //die Variable Bruttolohn aus der main() kriegt den Wert von m_Brutto zu-
                        //gewiesen, indem wir Bruttolohn = Angesteller1.ZeigBrutto(); schreiben
                        //und Bruttolohn den zurückgegeben Wert von ZeigBrutto() bekommt
                        //der im erste Fall 2000 entspricht und beim 2. aufrufen 3000
}

void Angestellter::SetzeBrutto(double neuBrutto)
{
     m_Brutto=neuBrutto; //m_Brutto wird auf 3000 gesetzt
}

Angestellter::Angestellter(string nachname, string vorname, double brutto)
{
    //dem Konstruktor werden 3 Werte übergeben : Meier, Franz, 2000
    m_Nachname = nachname; //m_Nachname = Meier
    m_Vorname = vorname; //m_Vorname = Franz
    m_Brutto = brutto; //m_Brutto = 2000
}
//man könnte diesen Konstruktor auch folgt schreiben bzw. sollte man
/*
Angesteller::Angesteller(string nachname, string vorname, double brutto) :
m_Nachname(nachname), m_Vorname(vorname), m_Brutto(brutto) {}
*/

Angestellter::~Angestellter() 
{
    //destruktor ist nicht nötig, da nicht mit dem Heap gearbeitet wurde
    //Heap = Speicher, für den man selbst sorgen muss und aufräumen muss
}
//_______________________________________________________________________________________

int main()
{
   double Bruttolohn; //Variable in der der Bruttolohn gespeichert wird, von einem Objekt der Klasse
                      //Angesteller
                      //diese Variable kriegt ihren Wert durch die Methode ZeigBrutto() die 
                      //einen Wert zurückliefert, nämich das Attribut m_Brutto
   Angestellter Angestellter1(&quot;Meier&quot;, &quot;Franz&quot;, 2000.0); //ein Objekt von Angesteller wird erstellt
                                                         //dem Konstruktor werden Werte übergeben
                                                         //m_Nachmame wird auf Meier gesetzt
                                                         //m_Vorname wird auf Franz gesetzt
                                                         //m_Brutto auf 2000
   Bruttolohn = Angestellter1.ZeigBrutto(); //Bruttolohn bekommt den Wert der gerade auf 2000 
                                            //gesetzt wurde Bruttolohn = m_Brutto
   cout &lt;&lt; &quot;Bruttolohn:&quot; &lt;&lt; Bruttolohn &lt;&lt;endl;
   Angestellter1.SetzeBrutto(3000.0); // m_Brutto wird auf 3000 gesetzt
   Bruttolohn = Angestellter1.ZeigBrutto(); //Bruttolohn = m_Brutto (3000)
   cout &lt;&lt; &quot;Bruttolohn:&quot; &lt;&lt; Bruttolohn &lt;&lt;endl;
   system (&quot;PAUSE&quot;); //ich würde hier raten &lt;conio.h&gt; zu inkludieren und getch() zu benutzen
   return 0;
}
</code></pre>
<p>Wenn du jetzt immer noch nichts verstanden hast, würde ich dir raten dir alles nochmal genau aus deinem Buch durchzulesen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1624014</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1624014</guid><dc:creator><![CDATA[freaky]]></dc:creator><pubDate>Mon, 01 Dec 2008 22:15:41 GMT</pubDate></item><item><title><![CDATA[Reply to OOP Newbie&#x2F; std::string&#x27; to &#96;double&#x27; in return on Tue, 02 Dec 2008 20:56:37 GMT]]></title><description><![CDATA[<p>wow vielen dank für die antwort!!!</p>
<p>wirklich sehr gut und ausfürhlich erklärt.</p>
<p>trotzdem eine frage. ich habe gelernt, dass man nur mit den methoden, die in der klasse unter public zu finden sind auf die attribute bzw. membervariablen zugreifen kann.</p>
<p>wenn wir jetzt aber mit folgenden code:</p>
<pre><code class="language-cpp">Angestellter::Angestellter(string nachname, string vorname, double brutto)
{
    //dem Konstruktor werden 3 Werte übergeben : Meier, Franz, 2000
    m_Nachname = nachname; //m_Nachname = Meier
    m_Vorname = vorname; //m_Vorname = Franz
    m_Brutto = brutto; //m_Brutto = 2000
}
</code></pre>
<p>auf die attritbute zugreifen mache ich dies nicht über eine methode sondern über den konstruktor. wie ist das zu verstehen?<br />
mir ist schon klar, dass der nachename, vorname und das brutto gehalt innerhalb der main funktion an den konstruktür übergeben werden (ich meine den konstruktor der innerhalb der Methodendefinition steht) bzw. man sagt dort, dass der nachname gleich den wert haben soll wie m_nachname. aber wo ist bitteschon die mehthode innerhalb der klassendeklaration genauer gesagt unter public die sagt, dass nachname=m_nachnemane ist?</p>
<p>weil ganz genau genommen existiert dort keine methode sondern &quot;nur&quot; ein<br />
konstruktor. und zwar dieser hier:</p>
<pre><code class="language-cpp">Angestellter(string nachname, string vorname, double brutto);
</code></pre>
<p>ich bin aber der meinung, dass die übergabe der werte auch über eine methode laufen muss oder wie kann es sein, dass plötzlich die attribute durch den konstruktor verändert werden können?</p>
<p>danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1624605</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1624605</guid><dc:creator><![CDATA[zuzu]]></dc:creator><pubDate>Tue, 02 Dec 2008 20:56:37 GMT</pubDate></item><item><title><![CDATA[Reply to OOP Newbie&#x2F; std::string&#x27; to &#96;double&#x27; in return on Tue, 02 Dec 2008 21:56:54 GMT]]></title><description><![CDATA[<p>Ein Konstruktor IST eine Methode. Es ist einfach eine Methode die ausgeführt wird, selbst wenn man es nicht will, wenn man ein Objekt der Klasse erstellt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1624629</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1624629</guid><dc:creator><![CDATA[freaky]]></dc:creator><pubDate>Tue, 02 Dec 2008 21:56:54 GMT</pubDate></item><item><title><![CDATA[Reply to OOP Newbie&#x2F; std::string&#x27; to &#96;double&#x27; in return on Wed, 03 Dec 2008 18:40:48 GMT]]></title><description><![CDATA[<p>mittlerweile habe ich hoffentlich alles verstanden aber mich würde mal interessieren wo genau in meinen prog instanzen sind?</p>
<p>außerdem wäre es toll folgende bezeichnungen zu wissen:</p>
<p>hier ist einmal der konstruktor zu sehen der sich innerhalb der klasse im bereich publich befindet:</p>
<pre><code class="language-cpp">Angestellter(string nachname, string vorname, double brutto); 

~Angestellter();// Desktruktor
</code></pre>
<p>aber wie bezeichnet man folgenden ausdruck der sich bereits in der methodendefinition befindet:</p>
<pre><code class="language-cpp">Angestellter::Angestellter(string nachname, string vorname, double brutto)
{
                                  m_Nachname = nachname;
                                  m_Vorname = vorname;
                                  m_Brutto = brutto;
}
</code></pre>
<p>ist dies auch eon konstruktor??!???</p>
<p>und dann wäre es toll zu wissen welche konstruktor ausgeführt wird bzw aufgerufen wird wenn ein objekt der klasse angestellter erstellt wird. denn anscheinend taucht der konstruktor ja zweimal auf.</p>
<p>jetzt gibt es bestimmt ärger <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1625067</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1625067</guid><dc:creator><![CDATA[zuzu]]></dc:creator><pubDate>Wed, 03 Dec 2008 18:40:48 GMT</pubDate></item><item><title><![CDATA[Reply to OOP Newbie&#x2F; std::string&#x27; to &#96;double&#x27; in return on Wed, 03 Dec 2008 19:13:22 GMT]]></title><description><![CDATA[<p>Ärger gibts nicht wirklich<br />
ja, das ist auch ein Konstruktor</p>
<p>welcher aufgerufen wird, ist, wie man das Objekt seiner Klasse erstellt:</p>
<pre><code class="language-cpp">class Test
{
Test();         // Standardkonstruktor (parameterloser Konstruktor)
Test(int zahl); // auch ein Konstruktor
~Test();        // Destruktor
}
</code></pre>
<p>wenn ich jetzt ein Objekt der Klasse Test erstelle, dann wird hier:</p>
<pre><code class="language-cpp">Test myObject;
</code></pre>
<p>der erste Konstruktor aufgerufen, weil ich beim Erstellen des Objekts keinen Parameter mit übergeben habe</p>
<p>wenn ich jetzt aber sowas mache:</p>
<pre><code class="language-cpp">Test myObject(10);
</code></pre>
<p>dann wird da der zweite Konstruktor aufgerufen, weil ich einen Parameter übergeben, der ein int (eine Zahl) ist und dadurch eben zum zweiten Konstruktor meiner Klasse passt</p>
<p>das würde aber zu nem Fehler führen:</p>
<pre><code class="language-cpp">Test myObject(&quot;hallo&quot;);
</code></pre>
<p>weil ich keinen Konstruktor habe, der einen string entgegennimmt</p>
<p>das ist natürlich auch falsch:</p>
<pre><code class="language-cpp">Test myObject(10, 10);
</code></pre>
<p>weil es keinen Konstruktor mit 2 Parameter gibt</p>
<p>eine Instanz deiner Klasse in deinem Programm ist hier:</p>
<pre><code class="language-cpp">Angestellter Angestellter1(&quot;Meier&quot;, &quot;Franz&quot;, 2000.0);
</code></pre>
<p>da erstellst du ein Objekt (eine Instanz wenn man so will) von deiner Klasse</p>
<p>ich hoffe, man konnte verstehen, was ich hier will <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/1625088</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1625088</guid><dc:creator><![CDATA[R3dNeXX]]></dc:creator><pubDate>Wed, 03 Dec 2008 19:13:22 GMT</pubDate></item><item><title><![CDATA[Reply to OOP Newbie&#x2F; std::string&#x27; to &#96;double&#x27; in return on Wed, 03 Dec 2008 19:23:47 GMT]]></title><description><![CDATA[<p>Nein der Konstruktor existiert nicht 2 Mal. Innerhalb deiner Klasse deklariest du nur die Attribute und deine Methoden. Erst untendrunter definierst du sie. In deiner Klasse schreibst du was dein Konstruktor für Parameter entgegen nimmt, dann unten drunter schreibst du was dein Konstruktor macht.<br />
Deine Klasse könnte auch so aussehen.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

class Angesteller
{
    private:
        std::string m_Nachname;
        std::string m_Vorname;
        double m_Brutto;
    public:
        Angesteller(std::string nachname, std::string vorname, double brutto) :
        m_Nachname(nachname), m_Vorname(vorname), m_Brutto(brutto) {}
        double Zeigbrutto() const
        {
            return m_Brutto;
        }
        void SetzeBrutto(double neu_brutto)
        {
            m_Brutto = neu_brutto;
        }
        ...
};

int main()
{
    ...
}
</code></pre>
<p>Und wie du siehst sind ist die Funktionalität der Methoden schon IN der Klasse geschrieben und nicht außerhalb mit</p>
<pre><code class="language-cpp">double Angesteller::ZeigBrutto() 
{ 
    ... 
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1625093</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1625093</guid><dc:creator><![CDATA[freaky]]></dc:creator><pubDate>Wed, 03 Dec 2008 19:23:47 GMT</pubDate></item><item><title><![CDATA[Reply to OOP Newbie&#x2F; std::string&#x27; to &#96;double&#x27; in return on Wed, 03 Dec 2008 19:25:10 GMT]]></title><description><![CDATA[<p>Nein der Konstruktor existiert nicht 2 Mal. Innerhalb deiner Klasse deklariest du nur die Attribute und deine Methoden. Erst untendrunter definierst du sie. In deiner Klasse schreibst du was dein Konstruktor für Parameter entgegen nimmt, dann unten drunter schreibst du was dein Konstruktor macht.<br />
Deine Klasse könnte auch so aussehen.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

class Angesteller
{
    private:
        std::string m_Nachname;
        std::string m_Vorname;
        double m_Brutto;
    public:
        Angesteller(std::string nachname, std::string vorname, double brutto) :
        m_Nachname(nachname), m_Vorname(vorname), m_Brutto(brutto) {}
        double Zeigbrutto() const
        {
            return m_Brutto;
        }
        void SetzeBrutto(double neu_brutto)
        {
            m_Brutto = neu_brutto;
        }
        ...
};

int main()
{
    ...
}
</code></pre>
<p>Und wie du siehst sind ist die Funktionalität der Methoden schon IN der Klasse geschrieben und nicht außerhalb mit</p>
<pre><code class="language-cpp">double Angesteller::ZeigBrutto() 
{ 
    ... 
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1625095</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1625095</guid><dc:creator><![CDATA[freaky]]></dc:creator><pubDate>Wed, 03 Dec 2008 19:25:10 GMT</pubDate></item><item><title><![CDATA[Reply to OOP Newbie&#x2F; std::string&#x27; to &#96;double&#x27; in return on Wed, 03 Dec 2008 19:55:38 GMT]]></title><description><![CDATA[<p>okay jau so stelle ich mir das auch vor!!!</p>
<p>aber warum existiert denn bitte die möglichkeit beides extra aufzuteilen. damit meine ich warum wird in einen basic buch die klasse extra geschrieben und die methodendefinition.</p>
<p>hat das ein vorteil? naja auch nicht so wichtig <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="😉"
    /><br />
_______________________________________________________________________________</p>
<p>meine fragen hören einfach nicht auf. ich möchte alles ganz genau wissen deswegen frage ich so oft nach.</p>
<p>in meine buch steht unter anderem auch, dass nur die methoden in public die attribute verändern dürfen bzw. durch die methoden hat man zugriff auf die atribute!</p>
<p>wenn ich jetzt aber mal weiter spinne weißt mein programm im folgenden abschnitt<br />
den attributen werte zu. das dürfe ja eigentlich nicht funktieren weil dies ja nur über die methoden geht und die methoden stehen im public bereich.</p>
<pre><code class="language-cpp">Angestellter::Angestellter(string nachname, string vorname, double brutto)
{
       m_Nachname = nachname;
       m_Vorname = vorname;
       m_Brutto = brutto;
}
</code></pre>
<p>wenn wir jetzt aber neu definieren und behaupten alles sind methoden, wie wir dies ja bereits bei den konstruktoren gemacht haben würde es ja passen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>aber mein buch sagt mir nur die methoden in public können die attribute verändern.</p>
<p>nächste frage was heißt verändern? lesezugriff oder voll\schreibzugriff??</p>
<p>danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1625102</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1625102</guid><dc:creator><![CDATA[zuzu]]></dc:creator><pubDate>Wed, 03 Dec 2008 19:55:38 GMT</pubDate></item><item><title><![CDATA[Reply to OOP Newbie&#x2F; std::string&#x27; to &#96;double&#x27; in return on Wed, 03 Dec 2008 20:26:06 GMT]]></title><description><![CDATA[<p>hab enoch einmal eine theorie die ich von dir bestätigt haben möchte <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>wenn folgendes in der main aufgerufen wird</p>
<pre><code class="language-cpp">nachname = Angestellter1.ZeigName();
</code></pre>
<p>passiert aus meiner sicht folgendes:<br />
1. das porgramm springt in die klasse und zwar in den bereich public.<br />
dort findet das porgramm dann die entsprechende methode.<br />
(anscheinend werden aber keine werte übergeben wie es beim konstruktor<br />
ist,oder?)</p>
<pre><code class="language-cpp">public:
       string ZeigName();
</code></pre>
<p>2. das programm springt in die methodendefinnition und findet dort<br />
selbstverständlich die passende &quot;methode oder das gegenstück&quot;<br />
(oder wie man das nennen möchte). dort ist hinterlegt das<br />
m_Nachname ausgegeben werden soll und das die variabel den wert string hat.<br />
(schon komisch da der variablen typ ja bereits in der klasse unter public<br />
festgelegt wurde ,oder?)</p>
<pre><code class="language-cpp">string Angestellter::ZeigName()
{
       return m_Nachname;
}
</code></pre>
<p>3. das programm springt wieder in die klasse und zwar in den bereich private und<br />
holt sich de entprechenden wert.</p>
<pre><code class="language-cpp">class Angestellter // Name der Klasse
{
private:
        string m_Nachname; // Attribute der Klasse Angestellter
</code></pre>
<p>simmt das so???? und wird beim zweiten schritt wirklich nichts übergeben? es steht ja auch nicht in den klammern?!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1625116</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1625116</guid><dc:creator><![CDATA[zuzu]]></dc:creator><pubDate>Wed, 03 Dec 2008 20:26:06 GMT</pubDate></item><item><title><![CDATA[Reply to OOP Newbie&#x2F; std::string&#x27; to &#96;double&#x27; in return on Wed, 03 Dec 2008 20:29:31 GMT]]></title><description><![CDATA[<p>Ja, korrekt, alles richtig was du gesagt hast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1625118</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1625118</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Wed, 03 Dec 2008 20:29:31 GMT</pubDate></item><item><title><![CDATA[Reply to OOP Newbie&#x2F; std::string&#x27; to &#96;double&#x27; in return on Wed, 03 Dec 2008 20:39:35 GMT]]></title><description><![CDATA[<p>Ich glaub du solltest dir lieber den OOP Bereich deines Buches nochmal durchlesen. Ein Konstruktor IST eine Methode, wieso soll er also kein Zugriff auf die Membervariablen haben.<br />
Zu deinem Methodenaufruf :</p>
<blockquote>
<p>in main() -&gt; Aufruf der Methode ZeigName() -&gt; in die passende Methode des Objekts wird gesprungen -&gt; die Methode hat Zugriff auf die gesamte Klasse -&gt; sie gibt den Nachnamen zurück -&gt; zurück zur main() -&gt; ...</p>
</blockquote>
<p>Und wieso soll nicht die Möglichkeit bestehen die Methodenfunktion schon in die Klasse zuschreiben UND sie aber auch in eine .cpp Datei zu schreiben ? Kann ich dich genau so fragen &quot;Wieso können wir durch Nase UND Mund atmen ?&quot;. Es geht einfach und das ist auch gut so. C++ ist vielseitig. By the way, Methoden können auch im private Bereich stehen und die Membervariablen in dem public Bereich.<br />
Aber aufgepasst, sowas würde z.B. nicht gehen</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

class Test
{
    private:
        Test()
        {
            std::cout &lt;&lt; &quot;Test&quot;;
        }
};

int main()
{
    Test test;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1625123</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1625123</guid><dc:creator><![CDATA[freaky]]></dc:creator><pubDate>Wed, 03 Dec 2008 20:39:35 GMT</pubDate></item><item><title><![CDATA[Reply to OOP Newbie&#x2F; std::string&#x27; to &#96;double&#x27; in return on Wed, 03 Dec 2008 21:25:29 GMT]]></title><description><![CDATA[<p>meine güte wir reden aneinander vorbei.</p>
<p>der konstruktor hat zugriff auf die attribute, dass ist mir klar.</p>
<p>aber damit der konstruktor zugriff hat benötigt er ja das gegenstück, oder?</p>
<p>einmalbenötigt man den konstruktor</p>
<pre><code class="language-cpp">Angestellter(string nachname, string vorname, double brutto);
</code></pre>
<p>und das passenden gegenstück</p>
<pre><code class="language-cpp">Angestellter::Angestellter(string nachname, string vorname, double brutto)
{
m_Nachname = nachname;
m_Vorname = vorname;
m_Brutto = brutto;
</code></pre>
<p>und eigentlich hat nur das gegenstück zugriff auf die atribute?</p>
<p>außerdem wäre es sehr, sehr freundlich von dir wenn du mir meine fragen aus den vorherigen post noch beantworten könntest.</p>
<p>habe dort insgesamt 3 schritte wie ich mir die &quot;verbinung zwischen main und der klasse vorstelle. am liebste wäre es mir wenn du dort direkt kommentare abgeben könntest.</p>
<p>sehe ich das richtig, dass nur die methoden in verbindung mit den &quot;gegenstück&quot; (ich hoffe du weißt jetzt was ich mit gegenstück meine) zugriff auf die attribute haben? mit zugriff meine ich einmal lesezugriff und einmal schreibzugriff</p>
<p>oder anderes gesagt wenn man veruscht ohne methode auf die private daten zuzugreifen erhält man vom compiler die fehlermeldung, dass die variable nicht deklariert ist, korrekt?</p>
<p>DANKE!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1625139</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1625139</guid><dc:creator><![CDATA[zuzu]]></dc:creator><pubDate>Wed, 03 Dec 2008 21:25:29 GMT</pubDate></item><item><title><![CDATA[Reply to OOP Newbie&#x2F; std::string&#x27; to &#96;double&#x27; in return on Wed, 03 Dec 2008 21:36:04 GMT]]></title><description><![CDATA[<p>Mein guter FireFighter hatte dir doch eine Antwort daraufgegeben. Außerdem, es gibt kein Gegenstück, das ist das ein und das selbe. In der Klasse wird es DEKLARIERT und untendrunter DEFINIERT. Das ist das selbe wie :</p>
<pre><code class="language-cpp">int foobar; //Deklaration
foobar = 55; //Definition
//oder
int foobar_funktion(int);
int foobar_funktion(int blub)
{
    ...
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1625142</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1625142</guid><dc:creator><![CDATA[freaky]]></dc:creator><pubDate>Wed, 03 Dec 2008 21:36:04 GMT</pubDate></item></channel></rss>