Help
-
Könnte mir einer sagen was an diesem Code Falsch ist??

#include<iostream> using namespace std; class rechteck { public: int A(int a, int b); int u(int a, int b); }; int rechteck::A(int a, int b) { int flaeche; flaeche=a*b; return flaeche; }; int rechteck::u(int a, int b) { int umfang; umfang=2*(a+b); return umfang; }; int main() { cout<<"Geben Sie a ein: "; int a; cin>>a; cout<<"Geben Sie b ein: "; int b; cin>>b; rechteck r1; cout<<"Der Flächeninhalt ist: "<<r1.A(int a, int b); cout<<"Der Umfang ist: "<<r1.u(int a, int b); }Dev-C++ sagt mir folgendes:
expected primary-expression before "int"und hättet ihr noch vorschläge wie der code besser bzw effektiver werden könnte?
fange ja gerade erst an bin für jede hilfe dankbar 
mfg Morphix
-
Hallo
Morphix schrieb:
cout<<"Der Flächeninhalt ist: "<<r1.A(a,b);
cout<<"Der Umfang ist: "<<r1.u(a,b);
}[/cpp]So müsste es gehen.
chrische
-
Klappt danke

aber hat wer vorschläge wie ich den code besser gestallten könnte ??
-
Du könntest a und b zu Membervariablen der Klasse mahen, und im Konstruktor zuweisen.
Dann kannst du die Parameter bei den Methoden weglassen.
(Außerdem ist es der Sinn von Klassen, denke ich
)
-
The-Kenny schrieb:
Dann kannst du die Parameter bei den Methoden weglassen.
was bringt das? Dann muss er die Werte schon vorher definieren(Standardkonstr.).
bringt rein garnicht,was du für nen blödsinn erzählst...
-
man muss den dekonstrukor kompl. dann in den buffer leeren und anschließend vom buffer in ner inline func übergeben so erhält man nen einfacheren brei.
-
WasDasBringen?? schrieb:
The-Kenny schrieb:
Dann kannst du die Parameter bei den Methoden weglassen.
was bringt das? Dann muss er die Werte schon vorher definieren(Standardkonstr.).
bringt rein garnicht,was du für nen blödsinn erzählst...Für das dort oben braucht man keine Klasse, da reichen Funktionen, die er evtl. in einen Namespace packen kann...
-
The-Kenny schrieb:
WasDasBringen?? schrieb:
The-Kenny schrieb:
Dann kannst du die Parameter bei den Methoden weglassen.
was bringt das? Dann muss er die Werte schon vorher definieren(Standardkonstr.).
bringt rein garnicht,was du für nen blödsinn erzählst...Für das dort oben braucht man keine Klasse, da reichen Funktionen, die er evtl. in einen Namespace packen kann...
klasse ist aber immunozianeller als deine Beschreibung

Funktionen sind ja in der Klasse.. lern die Grundlagen erst, bevor du einfach so drauf antwortest
-
wdb schrieb:
The-Kenny schrieb:
WasDasBringen?? schrieb:
The-Kenny schrieb:
Dann kannst du die Parameter bei den Methoden weglassen.
was bringt das? Dann muss er die Werte schon vorher definieren(Standardkonstr.).
bringt rein garnicht,was du für nen blödsinn erzählst...Für das dort oben braucht man keine Klasse, da reichen Funktionen, die er evtl. in einen Namespace packen kann...
klasse ist aber immunozianeller als deine Beschreibung

Funktionen sind ja in der Klasse.. lern die Grundlagen erst, bevor du einfach so drauf antwortest
hast Recht, wdb!
Klassen sie ummunozianeller, was kenny sagt, is völliger schwachsinn..
-
Ich werde jetzt nicht weiter mit jemandem diskutieren, der nichtmal sein wahres Gesicht zeigen will.
-
#include <iostream> class Rechteck { public: unsigned calculateArea(unsigned, unsigned); unsigned calculateExtent(unsigned, unsigned); }; unsigned Rechteck::calculateArea(unsigned value1, unsigned value2) { return value1 * value2; } unsigned Rechteck::calculateExtent(unsigned value1, unsigned value2) { return 2 * (value1 + value2); } int main() { std::cout << "Geben Sie die erste Zahl ein: " << std::endl; unsigned value1; std::cin >> value1; std::cout << "Geben Sie die zweite Zahl ein: " << std::endl; unsigned value2; std::cin >> value2; Rechteck rechteck; std::cout << "Der Flaecheninhalt betraegt: " << rechteck.calculateArea(value1, value2) << std::endl; std::cout << "Der Umfang betraegt: " << rechteck.calculateExtent(value1, value2) << std::endl; }
-
Da die Methoden der Klasse _nicht_ auf Membervariablen zugreifen und es eben nicht mal welche gibt, die Methoden ausserdem eher an die Klasse als an ein konkretes Objekt gebunden sind, sollte man sie static machen.
Das führt dazu, dass man eine Klasse mit zwei public static Methoden hat
die Klasse ist nicht nötig. Es reicht ein namespace, wie The-Kenny bereits sagte.namespace rectangle { unsigned calculateArea(unsigned value1, unsigned value2) { return value1 * value2; } unsigned calculateExtent(unsigned value1, unsigned value2) { return 2 * (value1 + value2); } } int main() { std::cout << "Geben Sie die erste Zahl ein: " << std::endl; unsigned value1; std::cin >> value1; std::cout << "Geben Sie die zweite Zahl ein: " << std::endl; unsigned value2; std::cin >> value2; std::cout << "Der Flaecheninhalt betraegt: " << rectangle::calculateArea(value1, value2) << std::endl; std::cout << "Der Umfang betraegt: " << rectangle::calculateExtent(value1, value2) << std::endl; }Gruß
Don06