<?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[Frage zur Übergabe eines Makros als Parameter]]></title><description><![CDATA[<p>Hey Leute,<br />
wollt mal fragen ob ich an eine Funktion als Parameter auch ein makro übergeben kann???</p>
<p>Beispiel:<br />
#define Cube(x) ( (x) * (x) )</p>
<p>int b = 5;</p>
<p>eineFunktion(int a,int Cube(b))<br />
{<br />
}</p>
<p>danke schonmal;-)</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/260240/frage-zur-übergabe-eines-makros-als-parameter</link><generator>RSS for Node</generator><lastBuildDate>Tue, 08 Sep 2026 04:29:27 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/260240.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 02 Feb 2010 17:33:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zur Übergabe eines Makros als Parameter on Tue, 02 Feb 2010 17:33:45 GMT]]></title><description><![CDATA[<p>Hey Leute,<br />
wollt mal fragen ob ich an eine Funktion als Parameter auch ein makro übergeben kann???</p>
<p>Beispiel:<br />
#define Cube(x) ( (x) * (x) )</p>
<p>int b = 5;</p>
<p>eineFunktion(int a,int Cube(b))<br />
{<br />
}</p>
<p>danke schonmal;-)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1849300</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1849300</guid><dc:creator><![CDATA[fr33g]]></dc:creator><pubDate>Tue, 02 Feb 2010 17:33:45 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur Übergabe eines Makros als Parameter on Tue, 02 Feb 2010 17:40:21 GMT]]></title><description><![CDATA[<p>ja sicher aber in dem speziellen fall gehts nicht, solltest du aber deine 2 busen so rein packen...</p>
<pre><code class="language-cpp">#define Cube(x) ( (x) * (x) )
void myFn(int x){
  printf(&quot;%d&quot;,x);
}
int main(void){
  myFn(Cube(2));
}
</code></pre>
<p>sowas geht auch</p>
<pre><code class="language-cpp">#define TP(x,y) x y
void myFn(TP(int,x)){
  printf(&quot;%d&quot;,x);
}
int main(void){
  myFn(2);
}
</code></pre>
<p>obs sinn macht ist mir jetzt mal gleich <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>lg lolo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1849305</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1849305</guid><dc:creator><![CDATA[noobLolo]]></dc:creator><pubDate>Tue, 02 Feb 2010 17:40:21 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur Übergabe eines Makros als Parameter on Tue, 02 Feb 2010 17:44:50 GMT]]></title><description><![CDATA[<p>fr33g schrieb:</p>
<blockquote>
<p>Hey Leute,<br />
wollt mal fragen ob ich an eine Funktion als Parameter auch ein makro übergeben kann???</p>
</blockquote>
<p>Nein, das geht nicht. Makros sind eine reine Textersetzung, du musst also schauen, durch was dein Makro ersetzt wird und dann fragen, ob du *das* an die Funktion übergeben kannst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1849306</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1849306</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Tue, 02 Feb 2010 17:44:50 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur Übergabe eines Makros als Parameter on Tue, 02 Feb 2010 18:35:15 GMT]]></title><description><![CDATA[<p>Ok, danke jetzt weiß ich bescheid=)</p>
<p>Hab ma noch ne frage, passt hier zwar net rein, aber wollt jetzt au net extra nen thread aufmachen.</p>
<p>und zwar, ich hab mir eine Klasse geschrieben z.B. auto.</p>
<p>so jetzt will ich ein neues auto objekt erstellen.</p>
<p>vorher hat der benutzer durch eine eingabe den namen in einem string gespeichert.</p>
<p>also z.b:</p>
<p>cout &lt;&lt; &quot;Autonamen&quot;;<br />
string autoname;<br />
cin &gt;&gt; autoname;</p>
<p>kann ich jetzt mit<br />
auto &quot;autoname&quot; ein objekt auto erstellen, so dass ich dies dann in einer map speichern kann?</p>
<p>map Autos[autoname] = autoname;</p>
<p>hoffe ihr versteht was ich meine;-)</p>
<p>danke schonmal</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1849336</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1849336</guid><dc:creator><![CDATA[fr33g]]></dc:creator><pubDate>Tue, 02 Feb 2010 18:35:15 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur Übergabe eines Makros als Parameter on Tue, 02 Feb 2010 19:51:11 GMT]]></title><description><![CDATA[<p>Ja, aber benenne deine Klasse nicht nach reservierten Schlüsselwörtern der Sprache.</p>
<p>Als assoziativen Container könntest du <code>std::map</code> verwenden. Eine Einführung findest du <a href="http://magazin.c-plusplus.net/artikel/Aufbau%20der%20STL%20-%20Teil%201%3A%20Container" rel="nofollow">hier</a>, als Nachschlagewerk ist <a href="http://www.cplusplus.com" rel="nofollow">www.cplusplus.com</a> zu empfehlen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1849393</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1849393</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 02 Feb 2010 19:51:11 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur Übergabe eines Makros als Parameter on Tue, 02 Feb 2010 20:17:10 GMT]]></title><description><![CDATA[<p>also ich hab jetzt mal folgendes probiert, klappt aber irgendwie nicht.</p>
<p>main.cpp</p>
<pre><code class="language-cpp">#include &quot;classAdressen.h&quot;
#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;fstream&gt;
#include &lt;map&gt;
using namespace std;

void auslesen(map&lt;string, Adressen&gt;);
void einlesen(map&lt;string, Adressen&gt;);

int main()
{
    map&lt;string, Adressen&gt; Daten;

    int choice;
    bool stop = false;
    bool stop2 = false;

    while(true)
    {
        marke:;
        cout &lt;&lt; &quot;Wollen sie eine Adresse speichern(1)oder nicht(2)?&quot;;
        cin &gt;&gt; choice;

        if (choice == 2)
            stop = true;
        else if( (choice != 2) &amp;&amp; (choice != 1) )
        {
            cout &lt;&lt; &quot;Falsche Eingabe\n&quot;;
            goto marke;
        }

        while (stop == true)
        {
            marke2:;
            cout &lt;&lt; &quot;Wollen sie Adressen auslesen(1) oder beenden(2)?&quot;;
            cin &gt;&gt; choice;

            if (choice == 2)
            {
                stop2 = true;
                break;
            }
            else if( (choice != 2) &amp;&amp; (choice != 1) )
            {
                cout &lt;&lt; &quot;Falsche Eingabe\n&quot;;
                goto marke2;
            }

            auslesen(Daten);

        }
        if (stop2 == true)
            break;

        einlesen(Daten);

    }

}

void auslesen(map&lt;string, Adressen&gt; Daten)
{
    string vorname;
    cout &lt;&lt; &quot;Welche Adresse wollen sie auslesen(Vorname): &quot;;
    cin &gt;&gt; vorname;

    cout &lt;&lt; Daten[vorname].getVor_name();
    cout &lt;&lt; Daten[vorname].getNach_name();
    cout &lt;&lt; Daten[vorname].getAdresse();
    cout &lt;&lt; Daten[vorname].getTele();

}

void einlesen(map&lt;string, Adressen&gt; Daten)
{
    cout &lt;&lt; &quot;Geben sie den Vornamen ein: &quot;;
    string vor_name;
    cin &gt;&gt; vor_name;

    cout &lt;&lt; &quot;Geben sie den Nachname ein: &quot;;
    string nach_name;
    cin &gt;&gt; nach_name;

    cout &lt;&lt; &quot;Geben sie die Adresse ein: &quot;;
    string adresse;
    cin.ignore();
    getline(cin,adresse);

    cout &lt;&lt; &quot;Geben sie die Telefonnummer ein: &quot;;
    string tele;
    cin &gt;&gt; tele;

    Daten[vor_name] = new Adressen(vor_name, nach_name, adresse, tele);

}
</code></pre>
<p>classAdressen.h</p>
<pre><code class="language-cpp">#include &lt;string&gt;

#ifndef CLASSADRESSEN_H_INCLUDED
#define CLASSADRESSEN_H_INCLUDED

class Adressen
{
    public:
        Adressen(){}
        Adressen(std::string vorname, std::string nachname, std::string adresse, std::string tele):
            itsVor_name(vorname), itsNach_name(nachname), itsAdresse(adresse), itsTele(tele) {};
        ~Adressen(){};
        void setVor_name(std::string&amp;);
        void setNach_name(std::string&amp;);
        void setAdresse(std::string&amp;);
        void setTele(std::string&amp;);
        std::string getVor_name()const{return itsVor_name;}
        std::string getNach_name()const{return itsNach_name;}
        std::string getAdresse()const{return itsAdresse;}
        std::string getTele()const{return itsTele;}

    private:
        std::string itsVor_name;
        std::string itsNach_name;
        std::string itsAdresse;
        std::string itsTele;
};

#endif // CLASSADRESSEN_H_INCLUDED
</code></pre>
<p>classAdressen.cpp</p>
<pre><code class="language-cpp">#include &quot;classAdressen.h&quot;
#include &lt;iostream&gt;
#include &lt;string&gt;

using namespace std;

void Adressen::setVor_name(string &amp;vor_name)
{
    itsVor_name=vor_name;
}

void Adressen::setNach_name(string &amp;nach_name)
{
    itsNach_name=nach_name;
}

void Adressen::setAdresse(string &amp;adresse)
{
    itsAdresse=adresse;
}

void Adressen::setTele(string &amp;tele)
{
    itsTele=tele;
}
</code></pre>
<p>ich bekomm jedoch immer den fehler:<br />
no match for operator= in......</p>
<p>hoffe ihr könnt mir helfen=)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1849416</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1849416</guid><dc:creator><![CDATA[fr33g]]></dc:creator><pubDate>Tue, 02 Feb 2010 20:17:10 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur Übergabe eines Makros als Parameter on Tue, 02 Feb 2010 20:24:51 GMT]]></title><description><![CDATA[<p>Bei so viel Code solltest du sagen, wo der Fehler auftritt, oder gleich nur den relevanten Teil posten.</p>
<p>Aber verwende kein <code>goto</code> ! Dessen Anwendung ist nur in sehr sehr wenigen Fällen berechtigt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1849425</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1849425</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 02 Feb 2010 20:24:51 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur Übergabe eines Makros als Parameter on Tue, 02 Feb 2010 20:37:59 GMT]]></title><description><![CDATA[<p>ja das mit dem goto muss ich mir echt abgewöhnen:(</p>
<p>der fehler ist in der main, ganz unten wo steht<br />
Daten[vor_name] = new Adressen....</p>
<p>hoffe ihr findet den fehler=)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1849433</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1849433</guid><dc:creator><![CDATA[fr33g]]></dc:creator><pubDate>Tue, 02 Feb 2010 20:37:59 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur Übergabe eines Makros als Parameter on Tue, 02 Feb 2010 20:48:31 GMT]]></title><description><![CDATA[<p>Du weist den falschen Typ zu. Deklariert ist</p>
<pre><code class="language-cpp">map&lt;string, Adressen&gt;
</code></pre>
<p>, du willst den Container aber wie</p>
<pre><code class="language-cpp">map&lt;string, Adressen*&gt;
</code></pre>
<p>benutzen (schliesslich gibt <code>new</code> einen Zeiger zurück). Und das ist keine gute Idee! Vermeide <code>new</code> , wenn es nicht nötig ist.</p>
<p>In deinem Fall reicht ein</p>
<pre><code class="language-cpp">Daten[vor_name] = Adressen(vor_name, nach_name, adresse, tele);
</code></pre>
<p>P.S. Ich würde mir eine vernünftige Namenskonvention aussuchen und diese konsequent durchziehen. Aber sowas wie &quot;getVor_name&quot; ist schrecklich. <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 />
Die verbreitetsten Formen sind wohl &quot;getVorname&quot;, &quot;GetVorname&quot; und &quot;get_vorname&quot;.</p>
<p>Ach ja, nochwas: Übergib Container im Allgemeinen nicht als Kopie wie z.B. hier:</p>
<pre><code class="language-cpp">void einlesen(map&lt;string, Adressen&gt;);
</code></pre>
<p>Referenzen, wenn angebracht auf konstante Objekte, sind das Stichwort. Je nachdem auch Zeiger.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1849438</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1849438</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 02 Feb 2010 20:48:31 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur Übergabe eines Makros als Parameter on Wed, 03 Feb 2010 05:58:00 GMT]]></title><description><![CDATA[<p>Ok danke schonmal, werxs heute nachmittag mal probieren. Mein aber das schon probiert zu habenjedoch ohne erfolg. Probiers aber nochmal und meld mich;-)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1849555</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1849555</guid><dc:creator><![CDATA[fr33g]]></dc:creator><pubDate>Wed, 03 Feb 2010 05:58:00 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur Übergabe eines Makros als Parameter on Wed, 03 Feb 2010 07:52:32 GMT]]></title><description><![CDATA[<p>Ein bisschen allgemeines zum Code:<br />
1. statt goto ist hier continue angebrachter, damit entfällt auch die Sprungmarke.<br />
2. stop == true ist doppelt gemoppelt (ist es wahr, dass stop wahr ist?), while(stop) tut's auch.<br />
3. die beiden Schleifen wären in eigenen Funktionen besser aufgehoben. So wird jetzt der Fall choice==1 von oben ganz am Ende abgehandelt und die andere Schleife ist da noch dazwischen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /><br />
Das trägt nicht viel zur Übersichtlichkeit bei.<br />
4. Wenn Adressen eine einzelne Adresse ist, sollte der Name am besten auch wiederspiegeln. Unter Adressen würde ich mir einen Adressencontainer oder sowas vorstellen...<br />
5. Hat Nexus schon gesagt: den Container unbedingt als Referenz übergeben, denn sonst wird er jedesmal kopiert, was a) teuer ist und b) dazu führt, dass die neue Adresse nie im Originalcontainer landet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1849576</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1849576</guid><dc:creator><![CDATA[Athar]]></dc:creator><pubDate>Wed, 03 Feb 2010 07:52:32 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur Übergabe eines Makros als Parameter on Wed, 03 Feb 2010 15:32:07 GMT]]></title><description><![CDATA[<p>Hey, danke hab es jetzt hinbekommen=)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1849903</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1849903</guid><dc:creator><![CDATA[fr33g]]></dc:creator><pubDate>Wed, 03 Feb 2010 15:32:07 GMT</pubDate></item></channel></rss>