Der Ausdruck muss einen Klassentyp aufweisen
-
Warum denn die Fehlermeldung?
class Virtuell { public: Virtuell(); ~Virtuell(); void sagWas() const; }; void Virtuell::sagWas() const { cout << "sagWas() von Virtuell" << endl; } int main() { Virtuell obj(); obj.sagWas(); getch(); return 0; }
-
newbie555 schrieb:
Warum denn die Fehlermeldung?
obj ist als Funktion mit Rückgabetyp Virtuell deklariert. Lass die Klammern weg.
-
Aaaaaaaaaahhhhh, stimmt. Danke!
Als eigtl Java-Programmierer wird man an der ein oder andern STelle bei C++ echt abgestraft... Sooo sinnvoll ist das aber auch nicht bei C++, dass Klmannern kommen, wenn man Parameter hat und sonst keine. Logischer wäre dann => keine Parameter => leere klammern...
Naja, man kanns nicht ändern

danke
-
Bin ich froh, dass ich da keine Klammern schreiben muss. Blöde Javaner.
-
newbie555 schrieb:
Sooo sinnvoll ist das aber auch nicht
Doch. Das Problem ist, dass man sich mit der Syntax für Funktionsdeklarationen in die Quere kommt, wenn man die Klammern da erlauben würde.
-
newbie555 schrieb:
Aaaaaaaaaahhhhh, stimmt. Danke!
Als eigtl Java-Programmierer wird man an der ein oder andern STelle bei C++ echt abgestraft... Sooo sinnvoll ist das aber auch nicht bei C++, dass Klmannern kommen, wenn man Parameter hat und sonst keine. Logischer wäre dann => keine Parameter => leere klammern...
dass man bei java beim Erzeugen eines Objektes immer die "()" Klammern benötigt, auch wenn das Objekt einen parameterlosen Konstruktor hat, liegt daran, dass in Java alle Objekte (mit ein paar ausnahmen wie die basis typen wie int, float und co) mit new angelegt werden müssen.
Aber in deinem Beispiel wird das Objekt nicht per new erzeugt sondern direkt auf dem Stack und da braucht es für parameterlose Konstruktoren keine Klammern.
Würdest du das Objekt per new auf dem Heap anlegen, dann können auch die "()" Klammern angegeben werden (müssen aber nicht)
-
cooky451 schrieb:
newbie555 schrieb:
Sooo sinnvoll ist das aber auch nicht
Doch. Das Problem ist, dass man sich mit der Syntax für Funktionsdeklarationen in die Quere kommt, wenn man die Klammern da erlauben würde.
Kollidiert doch sowieso schon.
Läuft das nicht nach dem Motto "if it can be a function it is a function"?