<?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[Anfängerfrage OOP]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich lerne grad C++ und spiele mal ein bissle mit Klassen rum. Nun habe ich beim komplilieren mit Dev-C++ 4.9.9.2 folgenden Fehler erhalten:</p>
<pre><code>main.cpp: In function `int main()':
main.cpp:69: error: request for member `print' in `myObj2', which is of non-class type `Basis ()()'

make.exe: *** [main.o] Error 1
</code></pre>
<p>Ich kann den Fehler zwar beheben in dem ich die Klammern hinter myObj2 entferne, nur wunder ich mich warum ich keine Klammern setzen darf.<br />
hier ist mal mein Testprogramm:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

using namespace std;

// Basis.hpp
class Basis
{
    private:
        int var;
        static int count;
    public:
        Basis(int var = 0);
        ~Basis();
        void set(int var);
        int get();
        void print();

};

// Basis.cpp
int Basis::count = 0;

Basis::Basis(int var)
{
    ++count;
    cout &lt;&lt; &quot;Basis ctor &quot; &lt;&lt; count &lt;&lt; endl;
    set(var);
}

Basis::~Basis()
{
    cout &lt;&lt; &quot;Basis dtor &quot; &lt;&lt; count &lt;&lt; endl;
    --count;
}

void Basis::set(int var)
{
    this-&gt;var = var;
}

int Basis::get()
{
    return this-&gt;var;
}

void Basis::print()
{
    cout &lt;&lt; &quot;var=&quot; &lt;&lt; var &lt;&lt; endl;
}

int main()
{
    {
        Basis myObj1;
        myObj1.print();

        Basis myObj2();
        myObj2.print();

        Basis* myObj3 = new Basis();
        myObj3-&gt;print();
        delete myObj3;  
    } 

    std::cout &lt;&lt; &quot;Press ENTER to close...&quot;;
    std::cin.clear(); 
    std::cin.ignore(std::cin.rdbuf()-&gt;in_avail()); 
    std::cin.get(); 
    return EXIT_SUCCESS;
}
</code></pre>
<p>Gruß Chris</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/146407/anfängerfrage-oop</link><generator>RSS for Node</generator><lastBuildDate>Thu, 03 Sep 2026 16:35:14 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/146407.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 07 May 2006 16:40:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Anfängerfrage OOP on Sun, 07 May 2006 16:40:23 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich lerne grad C++ und spiele mal ein bissle mit Klassen rum. Nun habe ich beim komplilieren mit Dev-C++ 4.9.9.2 folgenden Fehler erhalten:</p>
<pre><code>main.cpp: In function `int main()':
main.cpp:69: error: request for member `print' in `myObj2', which is of non-class type `Basis ()()'

make.exe: *** [main.o] Error 1
</code></pre>
<p>Ich kann den Fehler zwar beheben in dem ich die Klammern hinter myObj2 entferne, nur wunder ich mich warum ich keine Klammern setzen darf.<br />
hier ist mal mein Testprogramm:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

using namespace std;

// Basis.hpp
class Basis
{
    private:
        int var;
        static int count;
    public:
        Basis(int var = 0);
        ~Basis();
        void set(int var);
        int get();
        void print();

};

// Basis.cpp
int Basis::count = 0;

Basis::Basis(int var)
{
    ++count;
    cout &lt;&lt; &quot;Basis ctor &quot; &lt;&lt; count &lt;&lt; endl;
    set(var);
}

Basis::~Basis()
{
    cout &lt;&lt; &quot;Basis dtor &quot; &lt;&lt; count &lt;&lt; endl;
    --count;
}

void Basis::set(int var)
{
    this-&gt;var = var;
}

int Basis::get()
{
    return this-&gt;var;
}

void Basis::print()
{
    cout &lt;&lt; &quot;var=&quot; &lt;&lt; var &lt;&lt; endl;
}

int main()
{
    {
        Basis myObj1;
        myObj1.print();

        Basis myObj2();
        myObj2.print();

        Basis* myObj3 = new Basis();
        myObj3-&gt;print();
        delete myObj3;  
    } 

    std::cout &lt;&lt; &quot;Press ENTER to close...&quot;;
    std::cin.clear(); 
    std::cin.ignore(std::cin.rdbuf()-&gt;in_avail()); 
    std::cin.get(); 
    return EXIT_SUCCESS;
}
</code></pre>
<p>Gruß Chris</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1052783</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1052783</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 07 May 2006 16:40:23 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage OOP on Sun, 07 May 2006 16:45:31 GMT]]></title><description><![CDATA[<p>hi</p>
<p>hier :</p>
<pre><code>Basis myObj2();
        myObj2.print();
</code></pre>
<p>siehst du den schönen fehler, den &quot;javaisten&quot; gerne beim umstieg nach c++ machen.</p>
<p>Basis myObj2(); wird vom compiler als funktion interpretiert, nicht als instanzierung eines Objektes.</p>
<p>gruß</p>
<p>ps: noch ein wort dazu: Basis ist datentyp des rückgabewerts, myObj2 wird als funktiopnsname angenommen, die klammern als funktionsklammern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1052787</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1052787</guid><dc:creator><![CDATA[elise]]></dc:creator><pubDate>Sun, 07 May 2006 16:45:31 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage OOP on Sun, 07 May 2006 17:25:36 GMT]]></title><description><![CDATA[<p>Danke für die schnelle Antwort, ja dass der Compliler da ne Funktion drin sieht macht Sinn und ich kann nun beruhigt weitermachen. Habe tatsächlich vor C++ ein wenig mit Java rumgespielt und da kannste ja kaum Fehler in dieser Art machen.</p>
<p>Gruß Chris</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1052828</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1052828</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 07 May 2006 17:25:36 GMT</pubDate></item></channel></rss>