<?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[#define &#x2F; enum alternative]]></title><description><![CDATA[<p>hallo</p>
<p>ich schreibe eine testroutine, um ein ticketautomaten (übungsprojekt zum erlernen von c++ objektorientiert) zu testen.</p>
<p>angenommen, diese testroutine würde verwendet, um mehrere ticketautomaten des gleichen aufbaus, nur von anderen programmierern zu prüfen, müssen alle variablen namen etc im header dem jeweiligen ticketautomaten angepasst werden.</p>
<p>ich suche eine bessere möglichkeit als mit #define zu arbeiten, da wie ich gelernt habe, dies sehr unschönes programmieren ist und viele gefahren auftauchen.<br />
soweit ich weis eignen sich auch enums nicht, da ich denen nur einen zahlenwert zuweisen kann.</p>
<p>beispiel:<br />
die testroutine arbeitet nur mit folgenden var namen wie &quot;nameOfCoin5CHF&quot;.<br />
die eigentlich verwendeten var namen im ticketautomaten können dann so im header der testroutine vom user angepasst werden, ohne die ganze routine neu schrieben zu müssen</p>
<p>#define nameOfCoin5CHF Fr5<br />
#define nameOfCoin1CHF FR1</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/316348/define-enum-alternative</link><generator>RSS for Node</generator><lastBuildDate>Thu, 30 Jul 2026 08:22:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/316348.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 30 Apr 2013 15:08:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to #define &#x2F; enum alternative on Tue, 30 Apr 2013 15:09:24 GMT]]></title><description><![CDATA[<p>hallo</p>
<p>ich schreibe eine testroutine, um ein ticketautomaten (übungsprojekt zum erlernen von c++ objektorientiert) zu testen.</p>
<p>angenommen, diese testroutine würde verwendet, um mehrere ticketautomaten des gleichen aufbaus, nur von anderen programmierern zu prüfen, müssen alle variablen namen etc im header dem jeweiligen ticketautomaten angepasst werden.</p>
<p>ich suche eine bessere möglichkeit als mit #define zu arbeiten, da wie ich gelernt habe, dies sehr unschönes programmieren ist und viele gefahren auftauchen.<br />
soweit ich weis eignen sich auch enums nicht, da ich denen nur einen zahlenwert zuweisen kann.</p>
<p>beispiel:<br />
die testroutine arbeitet nur mit folgenden var namen wie &quot;nameOfCoin5CHF&quot;.<br />
die eigentlich verwendeten var namen im ticketautomaten können dann so im header der testroutine vom user angepasst werden, ohne die ganze routine neu schrieben zu müssen</p>
<p>#define nameOfCoin5CHF Fr5<br />
#define nameOfCoin1CHF FR1</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2319901</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2319901</guid><dc:creator><![CDATA[luk1990]]></dc:creator><pubDate>Tue, 30 Apr 2013 15:09:24 GMT</pubDate></item><item><title><![CDATA[Reply to #define &#x2F; enum alternative on Tue, 30 Apr 2013 15:12:19 GMT]]></title><description><![CDATA[<p>Willst du den objektorientierten oder den sinnvollen Ansatz wissen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2319903</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2319903</guid><dc:creator><![CDATA[objektorientiert]]></dc:creator><pubDate>Tue, 30 Apr 2013 15:12:19 GMT</pubDate></item><item><title><![CDATA[Reply to #define &#x2F; enum alternative on Tue, 30 Apr 2013 15:14:40 GMT]]></title><description><![CDATA[<p>allgemein:</p>
<p>alternative im objektorientieren zu #define</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2319904</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2319904</guid><dc:creator><![CDATA[luk1990]]></dc:creator><pubDate>Tue, 30 Apr 2013 15:14:40 GMT</pubDate></item><item><title><![CDATA[Reply to #define &#x2F; enum alternative on Tue, 30 Apr 2013 15:33:08 GMT]]></title><description><![CDATA[<p>Ehrlich gesagt verstehe ich das Problem nicht. Deine Testroutine besteht doch nicht nur aus lokalen Makros?<br />
Sondern aus Funktionen usw. die die Namen der Parameter eigentlich nicht wissen müssen? <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="😮"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2319907</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2319907</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Tue, 30 Apr 2013 15:33:08 GMT</pubDate></item><item><title><![CDATA[Reply to #define &#x2F; enum alternative on Tue, 30 Apr 2013 15:35:23 GMT]]></title><description><![CDATA[<p>&quot;sinnvoll&quot; wäre die richtige Antwort gewesen, aber hier hast du es mit OOP:</p>
<pre><code class="language-cpp">class nameOfCoinFactory {
  virtual std::string getName(int value) const = 0;
public:
  virtual ~nameOfCoinFactory() {}
  std::string nameOfCoin5CHF() const { return getName(5); }
  std::string nameOfCoin1CHF() const { return getName(1); }
};

nameOfCoinFactory const&amp; getCoinFactory() {
  class myCoinFactory : public nameOfCoinFactory {
    std::map&lt;int, std::string&gt; names;
    virtual std::string getName(int value) const {
      std::map&lt;int, std::string&gt;::const_iterator iter = names.find(value);
      if (iter == names.end())
        throw std::invalid_argument(&quot;there is no such coin&quot;);
      return iter-&gt;second;
    }
  public:
    myCoinFactory() {
      names[1] = &quot;FR1&quot;;
      names[5] = &quot;Fr5&quot;;
    }
  };
  static myCoinFactory instance;
  return instance;
}

int main()
{
  std::cout &lt;&lt; getCoinFactory().nameOfCoin1CHF() &lt;&lt; '\n';
  std::cout &lt;&lt; getCoinFactory().nameOfCoin5CHF() &lt;&lt; '\n';
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2319908</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2319908</guid><dc:creator><![CDATA[objektorientiert]]></dc:creator><pubDate>Tue, 30 Apr 2013 15:35:23 GMT</pubDate></item><item><title><![CDATA[Reply to #define &#x2F; enum alternative on Wed, 01 May 2013 11:00:13 GMT]]></title><description><![CDATA[<pre><code>#define nameOfCoin5CHF Fr5 
#define nameOfCoin1CHF FR1
</code></pre>
<p>zu</p>
<pre><code>char const* const nameOfCoin5CHF = &quot;Fr5&quot;;
char const* const nameOfCoin1CHF = &quot;FR1&quot;;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2320048</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2320048</guid><dc:creator><![CDATA[Ethon]]></dc:creator><pubDate>Wed, 01 May 2013 11:00:13 GMT</pubDate></item></channel></rss>