Klasseninstanz in Parameter einer anderen Klasse übergeben

grasmann

Grünschnabel
Hallo bin frisch angemeldet,

ich hab mich dazu entschlossen mich in c++ einzuarbeiten, nach dem "Hello World" bin ich direkt an die Klassen gegangen, hat auch, mit anfänglichen Schwierigkeiten, alles gut funktioniert. Ich konnte eine Klasse instanzieren und die Eigenschaften in der Konsole ausgeben, kein Problem.

Allerdings bin ich jetzt auf das erste schwierige Problem gestoßen. Und zwar:

Ich werd erstmal vereinfacht die Klassen skizzieren:

ClItem
string Name​
float Gewicht​
ClInventarItem
ClItem Item <- Hier liegt das Problem​
int Anzahl​
ClInventar
ClInventarItem[] <- Array <- Bis hierher bin ich noch garnicht gekommen​

Meine Grundfrage ist: Wie gebe ich dem Constructor von ClInventarItem einen Parameter der eine Instanz von ClItem nimmt?

So sieht der Constructor momentan aus:
Code:
ClInventarItem::ClInventarItem(ClItem item, int anzahl) {
	Item = item;
	Anzahl = anzahl;
}

Hier gibt er mir aber den Fehler: "no matching function for call to 'ClItem::ClItem()'"

Die Klasse ClItem ist in ClInventarItem schon included.

Ich bin schon ewig am Suchen und Probieren, kann aber irgendiwe keine Lösung finden XD, wäre also über etwas Hilfe sehr froh.
 
Hi und Willkommen bei tutorials.de :)

Das, was jede Klasse haben sollte (allein schon weil es "guter Stil" ist) sind ein Parameterloser Konstruktor (der laut Fehlermeldung fehlt, aber irgengendwo benötigt wird), ein Copykonstruktor und einen Zuweisungsoperator.

Zeig einmal ClItem, dann kann ich dir genau sagen, was wohin gehört.
 
Ok danke das war der Fehler ^^.
Kann dann erstmal als erledigt abgehakt werden.
Vielleicht meld ich mich in naher Zukunft noch ein paar Mal wegen anderem Zeuch.

Bis dann erstmal.
 
Ich würde dir so und so empfehlen keine objekte sondern nur pointer auf objekte zu übergeben.

Das Problem bei der übergabe von objekten ist, dass das objekt jedesmal dupliziert wird, (Copy construktor aufruf), was einerseits last macht, und andererseits zu problemen führt wenn du das objekt irgendwo modifizierst. (Es wird an anderen stellen nicht automatisch mit modifiziert).
 
Ich würde dir so und so empfehlen keine objekte sondern nur pointer auf objekte zu übergeben.
...oder Referenzen.

Das Problem bei der übergabe von objekten ist, dass das objekt jedesmal dupliziert wird, (Copy construktor aufruf), was einerseits last macht, und andererseits zu problemen führt wenn du das objekt irgendwo modifizierst. (Es wird an anderen stellen nicht automatisch mit modifiziert).
Muss ja nicht unbedingt ein Problem sein.
Manchmal kann es ja auch sinnvoll und absichtlich sein.

Gruß
 
Zurück