Lautsprecher
Erfahrenes Mitglied
Hallo,
ich bin totaler Anfänger was C++ angeht und versuche mich gerade darin ein wenig einzuarbeiten. Im Netz bin ich auf folgende Übung gestoßen, die ich gerade versuche zu lösen. Allerdings ist mir das ganze noch nicht so klar. Vielleicht kann mir da jemand weiter helfen:
Ich hab folgende Klasse gegeben:
dazu soll ein Konstruktor mit Elementinitsialisierungsliste angelegt werden und die Attribute sollen nur von abgeleiteten Klassen geändert werden können.
Die abgeleitete Klasse ist Quader mit dem Zusatz-Element Höhe und einer entsprechenden Methode zum Inhalt_berechnen incl. Konstrukor mit Elementinitsialisierungsliste. Zusätzlich soll eine Klassenvariable Anzahl vorhanden sein, die am Ende des Programms ausgibt wie viele Quader-Instanzen angelegt worden sind. Die Attributwerte werden im hauptprogramm vom Nutzer erfragt, der die Möglichkeit haben soll, mehrere Rechtecke und Quader anzulegen.
Das ganze handelt sich dabei um eine Win32-Konsolen-Anwendung.
Mein Lösungsversuch schaut bis dato so aus:
Wie gesagt ob es Programmiertechnisch soweit korrekt ist weis ich nicht.... momentan erhalte ich immer die Fehlermeldung: no match for call to (Rechteck(long int&, long int). Irgendwie übernimmt er mir die eingelesenen Variablen nicht in den Konstruktor
Danke für Eure Hilfe
ich bin totaler Anfänger was C++ angeht und versuche mich gerade darin ein wenig einzuarbeiten. Im Netz bin ich auf folgende Übung gestoßen, die ich gerade versuche zu lösen. Allerdings ist mir das ganze noch nicht so klar. Vielleicht kann mir da jemand weiter helfen:
Ich hab folgende Klasse gegeben:
Code:
class Rechteck
{
public: long laenge, breite;
void inhalt_berechnen()
{
long inhalt = laenge * breite;
cout .... Ausgabe des inhalts
}
}
dazu soll ein Konstruktor mit Elementinitsialisierungsliste angelegt werden und die Attribute sollen nur von abgeleiteten Klassen geändert werden können.
Die abgeleitete Klasse ist Quader mit dem Zusatz-Element Höhe und einer entsprechenden Methode zum Inhalt_berechnen incl. Konstrukor mit Elementinitsialisierungsliste. Zusätzlich soll eine Klassenvariable Anzahl vorhanden sein, die am Ende des Programms ausgibt wie viele Quader-Instanzen angelegt worden sind. Die Attributwerte werden im hauptprogramm vom Nutzer erfragt, der die Möglichkeit haben soll, mehrere Rechtecke und Quader anzulegen.
Das ganze handelt sich dabei um eine Win32-Konsolen-Anwendung.
Mein Lösungsversuch schaut bis dato so aus:
Code:
#include <iostream>
#include <iostream>
#include <string>
using namespace std;
class Rechteck
{
private:
int laenge;
int breite;
public: long anzahl_rechteck;
public: //Elementierungsliste für Rechteck
Rechteck(long l, long b):laenge(l), breite(b){};
void inhalt_berechnen()
{
long inhalt = laenge * breite;
cout << "Der Flaecheninhalt des Rechtecks ist " << inhalt <<endl;
anzahl_rechteck = anzahl_rechteck + 1;
//Variablen erneut initsialisieren
laenge = 0;
breite = 0;
}
void anzahl_rechteck_quader_ausgeben()
{
cout << anzahl_rechteck <<endl;
}
}; //Ende Klasse Rechteck
int main(){
Rechteck neues_rechteck(0,0);
int auswahl = 0;
string beenden = "n";
long lg = 0; //Variablen für die Benutzereingabe, werden dann im Konstruktur an die Methoden der Klasse übergeben
long br = 0;
long ho = 0;
cout <<"Willkommen zur Rechteck- und Quaderberechnung"<<endl;
do //Programm läuft solange, bis der Benutzer entscheiden es zu beenden,
{ //abschließend wird die Anzahl der angelegten Rechtecke und Quader ausgegeben
cout <<"Welche Berechnungsart moechten Sie durch fuehren?"<<endl;
cout <<"1 fuer Rechteck"<<endl;
cout <<"2 fuer Quader"<<endl;
cin >> auswahl;
switch (auswahl)
{
case 1:
cout << "Geben Sie bitte die Laenge des Rechtecks ein \n";
cin >> lg;
cout << "Geben Sie nun bitte die Breite des Rechtecks ein \n";
cin >> br;
neues_rechteck(lg,br);
neues_rechteck.inhalt_berechnen();
cout << "Moechten Sie die Berechnungen beenden? \n";
cout << "j = Ja \n" ;
cout << "n = Nein \n";
cin >> beenden;
break;
case 2:
cout << "Moechten Sie die Berechnungen beenden? \n";
cout << "j = Ja \n" ;
cout << "n = Nein \n";
cin >> beenden;
break;
}
neues_rechteck.anzahl_rechteck_quader_ausgeben();
}while(beenden == "n");
system("pause");
}
Wie gesagt ob es Programmiertechnisch soweit korrekt ist weis ich nicht.... momentan erhalte ich immer die Fehlermeldung: no match for call to (Rechteck(long int&, long int). Irgendwie übernimmt er mir die eingelesenen Variablen nicht in den Konstruktor
Danke für Eure Hilfe