<?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[main() &amp;quot;weglassen&amp;quot;]]></title><description><![CDATA[<p>Hallo erstmal.<br />
Ich will durch Auslagern die main()-Funktion auslassen, und dann eine Main()-Methode in einer selbstdefinierten Klasse als Aufrufpunkt verwenden. Ähnlich wie in C#. Der Grund ist einfach nur Spielerei oder Lernerei, ich will natürlich nicht C# neu erfinden oder so.<br />
Hier der Programcode der Headerdatei, die die main()-Funktion enthält:</p>
<pre><code>//classes.h
class Application
{
  static int nInstance;
  public:
    Application();
    void Initialize();
    virtual void Main() {};
    int hInstance();
    ~Application();
};

int Application::nInstance = 0;

Application::Application()
{ Initialize(); }

void Application::Initialize()
{ nInstance++; Main(); }

int Application::hInstance()
{ return nInstance; }

Application::~Application()
{ nInstance--; }

int main() { return 0; }
</code></pre>
<p>Und hier ein beliebiges Programm:</p>
<pre><code>// HelloWorld.cpp

#include &lt;iostream&gt;
#include &quot;classes&quot;

using namespace std;

class HelloWorld: public Application
{
  public:
    void Main()
    {
      cout &lt;&lt; &quot;Hello, world.&quot; &lt;&lt; endl;
    }
} HelloWorld;
</code></pre>
<p>Jetzt wird aber nicht, wie von mir erwartet, die Main()-Methode der Klasse &quot;HelloWorld&quot; aufgerufen, sondern anscheinend die der Klasse &quot;Application&quot;, die ja nichts macht.<br />
Was läuft gedanklich schief? Wer kann mir bitte helfen?<br />
P.S.:<br />
Die einzige Möglichkeit, wie es läuft, die ich aber nicht will, wäre:</p>
<pre><code>// classes.h
class Application
{
  static int nInstance;
  public:
    Application();
    int hInstance();
    ~Application();
};

int Application::nInstance = 0;

Application::Application()
{ nInstance++; }

int Application::hInstance()
{ return nInstance; }

Application::~Application()
{ nInstance--; }

int main() { return 0; }
</code></pre>
<pre><code>// HelloWorld.cpp

#include &lt;iostream&gt;
#include &quot;classes&quot;

using namespace std;

class HelloWorld: public Application
{
  public: HelloWorld()
  {
    cout &lt;&lt; &quot;Hello, world.&quot; &lt;&lt; endl;
  }
} HelloWorld;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/182760/main-quot-weglassen-quot</link><generator>RSS for Node</generator><lastBuildDate>Wed, 23 Sep 2026 02:04:57 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/182760.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 29 May 2007 03:36:05 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to main() &amp;quot;weglassen&amp;quot; on Tue, 29 May 2007 03:36:05 GMT]]></title><description><![CDATA[<p>Hallo erstmal.<br />
Ich will durch Auslagern die main()-Funktion auslassen, und dann eine Main()-Methode in einer selbstdefinierten Klasse als Aufrufpunkt verwenden. Ähnlich wie in C#. Der Grund ist einfach nur Spielerei oder Lernerei, ich will natürlich nicht C# neu erfinden oder so.<br />
Hier der Programcode der Headerdatei, die die main()-Funktion enthält:</p>
<pre><code>//classes.h
class Application
{
  static int nInstance;
  public:
    Application();
    void Initialize();
    virtual void Main() {};
    int hInstance();
    ~Application();
};

int Application::nInstance = 0;

Application::Application()
{ Initialize(); }

void Application::Initialize()
{ nInstance++; Main(); }

int Application::hInstance()
{ return nInstance; }

Application::~Application()
{ nInstance--; }

int main() { return 0; }
</code></pre>
<p>Und hier ein beliebiges Programm:</p>
<pre><code>// HelloWorld.cpp

#include &lt;iostream&gt;
#include &quot;classes&quot;

using namespace std;

class HelloWorld: public Application
{
  public:
    void Main()
    {
      cout &lt;&lt; &quot;Hello, world.&quot; &lt;&lt; endl;
    }
} HelloWorld;
</code></pre>
<p>Jetzt wird aber nicht, wie von mir erwartet, die Main()-Methode der Klasse &quot;HelloWorld&quot; aufgerufen, sondern anscheinend die der Klasse &quot;Application&quot;, die ja nichts macht.<br />
Was läuft gedanklich schief? Wer kann mir bitte helfen?<br />
P.S.:<br />
Die einzige Möglichkeit, wie es läuft, die ich aber nicht will, wäre:</p>
<pre><code>// classes.h
class Application
{
  static int nInstance;
  public:
    Application();
    int hInstance();
    ~Application();
};

int Application::nInstance = 0;

Application::Application()
{ nInstance++; }

int Application::hInstance()
{ return nInstance; }

Application::~Application()
{ nInstance--; }

int main() { return 0; }
</code></pre>
<pre><code>// HelloWorld.cpp

#include &lt;iostream&gt;
#include &quot;classes&quot;

using namespace std;

class HelloWorld: public Application
{
  public: HelloWorld()
  {
    cout &lt;&lt; &quot;Hello, world.&quot; &lt;&lt; endl;
  }
} HelloWorld;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1294148</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294148</guid><dc:creator><![CDATA[Robert K.]]></dc:creator><pubDate>Tue, 29 May 2007 03:36:05 GMT</pubDate></item><item><title><![CDATA[Reply to main() &amp;quot;weglassen&amp;quot; on Tue, 29 May 2007 04:43:52 GMT]]></title><description><![CDATA[<p>Robert K. schrieb:</p>
<blockquote>
<p>Was läuft gedanklich schief?</p>
</blockquote>
<p>Du rufst Main aus dem Konstruktor der Basisklasse auf (die zwischengeschaltete Initialize-Methode ändert daran nichts). Zu diesem Zeitpunkt ist aber dein Objekt noch kein HelloWorld-Objekt, der HelloWorld-Konstruktor wurde noch gar nicht ausgeführt. Daher wird Application::Main aufgerufen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1294150</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294150</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Tue, 29 May 2007 04:43:52 GMT</pubDate></item><item><title><![CDATA[Reply to main() &amp;quot;weglassen&amp;quot; on Tue, 29 May 2007 05:57:41 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/959">@Robert</a> K.:<br />
Auch wenn es gehen würde ist es denke ich nicht optimal wie du es zuerst probiert hast, denn dann würde dein ganzen Programm in der initialization phase laufen, und das kann AFAIK ziemlich ungute Nebeneffekte haben.<br />
Zum Beispiel die das dann initialization Code an anderen Stellen (andere .cpp Files) u.U. erst ausgeführt wird nachdem dein Programm schon fertig gelaufen ist.</p>
<p>Es gibt in C++ auch keine mir bekannte Möglichkeit (die kein gefährlicher Hack wäre) genau das hinzubekommen was du willst.<br />
Du könntest es allerdings so machen wie die MFC es auch macht. Schematisch sieht das so aus:</p>
<pre><code class="language-cpp">// Application.h:
class Application
{
public:
    Application();

    virtual int Run() = 0;

    virtual bool Initialize();
    virtual void Cleanup();

    static int Main();

private:
    static Application* sm_theApplication;
};

// Application.cpp:
#include &quot;Application.h&quot;

Application* Application::sm_theApplication = 0;

Application::Application()
{
    assert(sm_theApplication == 0);
    sm_theApplication = this;
}

int Application::Main()
{
    assert(sm_theApplication != 0);
    if (!sm_theApplication-&gt;Initialize())
        return 1;

    int rc = sm_theApplication-&gt;Main();
    sm_theApplication-&gt;Cleanup();
    return rc;
}

bool Application::Initialize()
{
    return true;
}

void Application::Cleanup()
{
}

// Main.cpp
#include &quot;Application.h&quot;

int main()
{
    return Application::Main();
}

// FooApp.cpp
#include &quot;Application.h&quot;
#include &lt;conio.h&gt;

namespace {

class FooApp : public Application
{
    int Run()
    {
        printf(&quot;Blubb.\n&quot;);
    }
};

FooApp xyz; // name ist egal

} // namespace
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1294166</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294166</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 29 May 2007 05:57:41 GMT</pubDate></item><item><title><![CDATA[Reply to main() &amp;quot;weglassen&amp;quot; on Tue, 29 May 2007 06:19:20 GMT]]></title><description><![CDATA[<p>Robert K. schrieb:</p>
<blockquote>
<p>Hallo erstmal.<br />
Ich will durch Auslagern die main()-Funktion auslassen, und dann eine Main()-Methode in einer selbstdefinierten Klasse als Aufrufpunkt verwenden. Ähnlich wie in C#.</p>
</blockquote>
<p>Du übersiehst dabei eine entscheidende Kleinigkeit <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="😉"
    /> In C# ist die Main static, womit sie im eigendlichen Sinne keine Methode der Klasse selbst ist, sondern nur eine Methode die innerhalb des Klassen-Codes definiert wird.</p>
<p>Genaugenommen bildet C# den main-Aufruf von C/C++ nach, nur halt im Rahmen der Möglichkeiten der Sprache. Will sagen, da in C# keine Methoden &quot;ausserhalb&quot; einer Klassendefinition definiert werden können, muß es halt, ebenso wie in java innerhalb eine Klasse definiert werden. (In Java ist die Main auch static btw...)</p>
<p>Ansonsten gilt fuer die C# main das gleiche wie fuer C/C++ <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><a href="http://msdn2.microsoft.com/en-us/library/acy3edy3(vs.71).aspx" rel="nofollow">http://msdn2.microsoft.com/en-us/library/acy3edy3(vs.71).aspx</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1294172</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294172</guid><dc:creator><![CDATA[skals]]></dc:creator><pubDate>Tue, 29 May 2007 06:19:20 GMT</pubDate></item><item><title><![CDATA[Reply to main() &amp;quot;weglassen&amp;quot; on Tue, 29 May 2007 08:03:00 GMT]]></title><description><![CDATA[<p>Ok, thnx.</p>
<p>Hab's jetzt durch einen kleinen &quot;Trick&quot; anders gemacht.<br />
In der Headerdatei &quot;classes.h&quot; in der die Klasse Application steht,<br />
sind nur Konstruktor, Destruktor, static nInstance und hInstance() definiert.</p>
<p>Das main() wird durch einen billigen Trick aufgerufen:</p>
<p>Da ich noch ein älteres C++ habe, das kein namespace kennt, habe ich namespace mit folgendem per #define definiert:</p>
<pre><code>...
#define namespace(x) int main(){x xMain; xMain.Main(); return 0;}
...
</code></pre>
<p>Im einem Program sähe das ganze so aus:</p>
<pre><code>#include &lt;iostream.h&gt;
#include &quot;classes.h&quot;

namespace
(
  class Hallo: public Application
  {
    public:
      static void Main()
      {
        cout &lt;&lt; &quot;Irgendwas.&quot;;
      }
  }
)
</code></pre>
<p>Die runden Klammern nach namespace sind absicht, da ja die Klasse im<br />
Rumpf per &quot;classes.h&quot; ein Makro-Parameter ist. Und das &quot;vergessene&quot;<br />
Semikolon ist auch absicht, da dies durch den Inhalt des Makros<br />
(... x xMain; ...) automatisch eingefügt wird.</p>
<p>Kleiner Nachteil: Ich kann nur 1 namespace, der auch noch namenlos ist,<br />
definieren, da ja dort die main()-Funktion steht.</p>
<p>Naja. Zum Glück hab' ich ja auch noch Visual-C#. Ich wollte ja nur bissel was dazulernen.<br />
Danke nochmal.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1294224</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294224</guid><dc:creator><![CDATA[Robert K.]]></dc:creator><pubDate>Tue, 29 May 2007 08:03:00 GMT</pubDate></item><item><title><![CDATA[Reply to main() &amp;quot;weglassen&amp;quot; on Tue, 29 May 2007 18:28:29 GMT]]></title><description><![CDATA[<p>Robert K. schrieb:</p>
<blockquote>
<p>Da ich noch ein älteres C++ habe, das kein namespace kennt, habe ich namespace mit folgendem per #define definiert:</p>
<pre><code>...
#define namespace(x) int main(){x xMain; xMain.Main(); return 0;}
...
</code></pre>
<p>Im einem Program sähe das ganze so aus:</p>
<pre><code>#include &lt;iostream.h&gt;
#include &quot;classes.h&quot;

namespace
(
  class Hallo: public Application
  {
    public:
      static void Main()
      {
        cout &lt;&lt; &quot;Irgendwas.&quot;;
      }
  }
)
</code></pre>
</blockquote>
<p>Gratuliere, du bist ein Vollpfosten. <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/1294723</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294723</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 29 May 2007 18:28:29 GMT</pubDate></item><item><title><![CDATA[Reply to main() &amp;quot;weglassen&amp;quot; on Tue, 29 May 2007 18:35:30 GMT]]></title><description><![CDATA[<p>Was Hustbaer damit sagen will ist, es sind solche &quot;Tricks&quot; die dich davon abhalten ein guter Programmierer zu werden... Je frühr Du dir sowas abgewöhnst, desto besser <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>Das ist fast auf einem Level mit den Leuten die true auf 0 und false auf 1 umdefinieren. (Lacht nicht hab ich alles schon selber gesehen... in Produktivsoftware...)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1294731</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294731</guid><dc:creator><![CDATA[skals]]></dc:creator><pubDate>Tue, 29 May 2007 18:35:30 GMT</pubDate></item><item><title><![CDATA[Reply to main() &amp;quot;weglassen&amp;quot; on Tue, 29 May 2007 18:38:16 GMT]]></title><description><![CDATA[<blockquote>
<p>Da ich noch ein älteres C++ habe</p>
</blockquote>
<p>kannste mir dein c++ verkaufen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1294733</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294733</guid><dc:creator><![CDATA[c++ käufer]]></dc:creator><pubDate>Tue, 29 May 2007 18:38:16 GMT</pubDate></item><item><title><![CDATA[Reply to main() &amp;quot;weglassen&amp;quot; on Tue, 29 May 2007 21:53:29 GMT]]></title><description><![CDATA[<p>also wenn du einfach keine main() willst, dann geht es ganz einfach (MSVC8SP1):</p>
<pre><code class="language-cpp">#pragma comment(linker, &quot;/ENTRY:?Start@Application@@SAHHQAPA_W@Z&quot;)

class Application
{
public:
	static int Start(int argc, wchar_t* argv[]);
};

int Application::Start(int argc, wchar_t* argv[])
{
	return 0;
}
</code></pre>
<p>Ist zwar so wie es da steht wenig portabel, aber wo ein Wille da auch ein Weg <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/1294859</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294859</guid><dc:creator><![CDATA[Superlexx]]></dc:creator><pubDate>Tue, 29 May 2007 21:53:29 GMT</pubDate></item><item><title><![CDATA[Reply to main() &amp;quot;weglassen&amp;quot; on Wed, 30 May 2007 06:25:13 GMT]]></title><description><![CDATA[<p>Ich muss mich leider korrigieren:<br />
Mein C++ für Windows ist etwas älter (C++ 3.1 oder so),<br />
ich hab ja auch noch openSUSE 10.2 und da ist ja auch C++ dabei<br />
(MIT namespace <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>Hab den Code mit #pragma probiert, ich kann mir zwar denken was der<br />
pragma-Befehl an dieser Stelle macht, aber nachvollziehen kann ich's nicht.<br />
Hab ihn unter Linux ausprobiert und es funktioniert nicht, er will immer noch ein Main() haben.</p>
<p>Einsichtig: Das mit dem &quot;umdefinieren&quot; des namespaces ist nicht wirklich gut,<br />
hab auch gestern 'ne neue Methode probiert.</p>
<p>Gibt es zufällig die Möglichkeit, einen Zeiger auf eine beliebige Funktion zu definieren und diesen dann als Funktion zu nutzen, also so nach dem Motto...</p>
<pre><code>Typ Funktion()
{
  ...
}
...
Typ Zeiger = Funktion();
// oder: Typ Zeiger = *Funktion() ?
// oder: Typ Zeiger = &amp;Funktion() ?
// oder, oder, oder, ...
...
Zeiger(); //hier wird eigentlich Funktion() aufgerufen
</code></pre>
<p>Mit Zeigern hab ich's nämlich meist nicht so, bin bisher meistens ohne<br />
ausgekommen, wenn's aber sein muss, oder besser ist, nehm' ich natürlich<br />
welche.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1294924</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294924</guid><dc:creator><![CDATA[Robert K.]]></dc:creator><pubDate>Wed, 30 May 2007 06:25:13 GMT</pubDate></item><item><title><![CDATA[Reply to main() &amp;quot;weglassen&amp;quot; on Wed, 30 May 2007 06:27:39 GMT]]></title><description><![CDATA[<p>Danke natürlich für eure Hilfe. Ich will ja nicht unhöflich sein.<br />
Wenn jemand sich auskennt, nehm ich Ratschläge gern an, besonders weil ich<br />
gern programmiere (leider eben ned so professionell).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1294926</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294926</guid><dc:creator><![CDATA[Robert K.]]></dc:creator><pubDate>Wed, 30 May 2007 06:27:39 GMT</pubDate></item><item><title><![CDATA[Reply to main() &amp;quot;weglassen&amp;quot; on Wed, 30 May 2007 06:38:29 GMT]]></title><description><![CDATA[<p>Ja Funktionszeiger gibts:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

void foo()
{
	std::cout &lt;&lt; &quot;calling foo()&quot; &lt;&lt; std::endl;
}

typedef void ( *fun_ptr )();

int main()
{
	fun_ptr ptr = foo;
	ptr();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1294935</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294935</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Wed, 30 May 2007 06:38:29 GMT</pubDate></item><item><title><![CDATA[Reply to main() &amp;quot;weglassen&amp;quot; on Wed, 30 May 2007 08:22:36 GMT]]></title><description><![CDATA[<p>Danke, vielmals.<br />
Ich habe jetzt übrigens noch 'ne tolle Möglichkeit, das main() &quot;wegzulassen&quot; entdeckt. Hier einfach mal der Code zum durchlesen:</p>
<p>&quot;Classes.h&quot;</p>
<pre><code>#ifndef __CLASSES_H
#define __CLASSES_H

namespace Classes
{
  typedef void TForm;

  class Application
  {
    static int nInstance;
    typedef void (*TForm)();
    public:
      Application();
      Application(TForm Pointer);
      TForm Run;
      int hInstance();
      ~Application();
  };
}

int Classes::Application::nInstance = -1;
Classes::Application::Application() { ++nInstance; }
Classes::Application::Application(TForm Pointer) { ++nInstance; Run = Pointer; }
int Classes::Application::hInstance() { return nInstance; }
Classes::Application::~Application() { Run(); --nInstance; }

int main() { return 0; }

#endif
</code></pre>
<p>&quot;Form1.h&quot;:</p>
<pre><code>#include &lt;iostream&gt;

using namespace std;

namespace Form1
{
  class TForm1
  {
    public: static void Main()
    {
      cout &lt;&lt; &quot;Geht.&quot; &lt;&lt; endl;
    }
  };
}
</code></pre>
<p>&quot;Form1.cpp&quot;</p>
<pre><code>#include &lt;iostream&gt;

#include &quot;Classes.h&quot;
#include &quot;Form1.h&quot;

namespace Form1
{
  Classes::Application Form1(TForm1::Main);
}
</code></pre>
<p>Man schreibt also sozusagen eine Headerdatei mit den eigentlichen Klassen (ähnlich wie in C#) und man benötigt man eine cpp-Datei (wie Form1.cpp), in der 1. &quot;Classes.h&quot; und die eigenen Klassen mit geincludet werden, und 2. mittels Classes::Application name(klasse::funktion) defineirt wird, wo das Hauptprogramm steht (also der main()-Ersatz).<br />
Der Konstruktor definiert quasi einen Zeiger (Klasse Application, Element Run) auf das Hauptprogramm (Beispiel siehe oben).</p>
<p>Jedenfalls MANY THNX für eure Hilfe. Wer interessiert ist, kann den Code auch für sich verwednen. <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/1294983</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294983</guid><dc:creator><![CDATA[Robert K.]]></dc:creator><pubDate>Wed, 30 May 2007 08:22:36 GMT</pubDate></item><item><title><![CDATA[Reply to main() &amp;quot;weglassen&amp;quot; on Wed, 30 May 2007 08:23:46 GMT]]></title><description><![CDATA[<p>OOOPS, hab mich vertippt.<br />
In classes.h wird Application::nInstance mit 0 initialisiert und nicht mit -1,<br />
sorry</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1294985</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294985</guid><dc:creator><![CDATA[Robert K.]]></dc:creator><pubDate>Wed, 30 May 2007 08:23:46 GMT</pubDate></item><item><title><![CDATA[Reply to main() &amp;quot;weglassen&amp;quot; on Wed, 30 May 2007 08:31:29 GMT]]></title><description><![CDATA[<p>Warum nimmst du egtl nicht einfach C#? C++ scheint dir ja nicht zu gefallen wie's ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1294991</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294991</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Wed, 30 May 2007 08:31:29 GMT</pubDate></item><item><title><![CDATA[Reply to main() &amp;quot;weglassen&amp;quot; on Wed, 30 May 2007 08:44:45 GMT]]></title><description><![CDATA[<p>Ich hab ja auch C#. Ich wollte das ja nur, um etwas dazu zu lernen.<br />
Und hierbei brauchte ich halt etwas Hilfe. So an sich ist doch C++ OK.</p>
<p>Aber bestimmte Dinge anders zu machen als andere ist doch auch in Ordnung.<br />
Alle die in C++ programmieren, schreiben ordentlich, brav ihr main() und ich wollt des halt ned. Gut, wenn ich etz blos a kleines Testprogramm hab, das mal blos &quot;Hallo Welt&quot; schreibt, dann mach ich sowas ned. Da schreib ich dann schon main()... aber für größeres könnte ich mir meine Variante scho vorstellen, vor allem weil ich C# bloß für WinXP hab und unter Linux &quot;nur&quot; C++.<br />
Aber egal.</p>
<p>Kurz: Es sollte mir eigentlich nur lernmäßig dienen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1295002</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1295002</guid><dc:creator><![CDATA[Robert K.]]></dc:creator><pubDate>Wed, 30 May 2007 08:44:45 GMT</pubDate></item><item><title><![CDATA[Reply to main() &amp;quot;weglassen&amp;quot; on Wed, 30 May 2007 08:46:50 GMT]]></title><description><![CDATA[<p>Naja, ich mach dann für heut mal Schluss. Muss nochwas anderes auch machen außer bloß C++. Aber ich melde mich mal wieder.</p>
<p>CU@ALL</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1295005</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1295005</guid><dc:creator><![CDATA[Robert K.]]></dc:creator><pubDate>Wed, 30 May 2007 08:46:50 GMT</pubDate></item><item><title><![CDATA[Reply to main() &amp;quot;weglassen&amp;quot; on Wed, 30 May 2007 13:46:08 GMT]]></title><description><![CDATA[<p>Wenn alle Programmiersprachen gleich wären, dann bräuchte man keine verschiedenen Sprachen..</p>
<p>Außerdem zwingt dich niemand alles in die Main zu stopfen. In einem C++ Programm kann die main() durchaus so aussehen:</p>
<pre><code class="language-cpp">int main()
{
  Application app;

  return app.main(); //oder beliebiger anderer Name
}
</code></pre>
<p>In einer realen Anwendung wäre wahrscheinlich noch ein try..catch außen herum und man würde die Kommandozeile auswerten.</p>
<p>P.S. Das was du hier tust ist ein typischer Fall für <a href="http://www.thedailywtf.com" rel="nofollow">www.thedailywtf.com</a> weil du ein Problem löst das nicht existiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1295235</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1295235</guid><dc:creator><![CDATA[lolz]]></dc:creator><pubDate>Wed, 30 May 2007 13:46:08 GMT</pubDate></item><item><title><![CDATA[Reply to main() &amp;quot;weglassen&amp;quot; on Wed, 30 May 2007 17:34:41 GMT]]></title><description><![CDATA[<p>Robert K. schrieb:</p>
<blockquote>
<p>Ich hab ja auch C#. Ich wollte das ja nur, um etwas dazu zu lernen.<br />
Und hierbei brauchte ich halt etwas Hilfe. So an sich ist doch C++ OK.</p>
<p>Aber bestimmte Dinge anders zu machen als andere ist doch auch in Ordnung.<br />
Alle die in C++ programmieren, schreiben ordentlich, brav ihr main() und ich wollt des halt ned. Gut, wenn ich etz blos a kleines Testprogramm hab, das mal blos &quot;Hallo Welt&quot; schreibt, dann mach ich sowas ned. Da schreib ich dann schon main()... aber für größeres könnte ich mir meine Variante scho vorstellen, vor allem weil ich C# bloß für WinXP hab und unter Linux &quot;nur&quot; C++.<br />
Aber egal..</p>
</blockquote>
<p>]</p>
<p>Früher oder später wirst Du noch lernen das es gute Gründe gibt warum gute Programmierer sich an Standarts, Design Patterns und Best Praktices halten. Mit der Einstellung die Du da zeigst wohl eher später und &quot;the hard way&quot;.</p>
<p>Naja, solange Du es nciht als Job machen willst sondern nur als Hobby ists ziemlich egal <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>Oder um es mit einem Zitat aus eine Film zu sagen: &quot;Wenn Du einen Nagel in die wand schlagen willst, dann nimm einen Hammer und schlag den Nagel in die Wand&quot;. Was Du machst ist eher der Versuch mit einer Hydraulikpresse den Nagel in die Wand zu drücken...</p>
<p>[quote=&quot;Robert K.&quot;]<br />
Kurz: Es sollte mir eigentlich nur lernmäßig dienen.[/quote</p>
<p>Und das Lernergebnis hätte sein sollen das der beste udn sinnvollste Weg in C++ immer noch ein simples</p>
<pre><code class="language-cpp">class Application {

};

int main()
{
    Application.Run()
}
</code></pre>
<p>wäre.</p>
<p>Ps: Bin selber ein begeisterter C# Progger... Das mal am Rande...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1295431</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1295431</guid><dc:creator><![CDATA[skals]]></dc:creator><pubDate>Wed, 30 May 2007 17:34:41 GMT</pubDate></item></channel></rss>