Cout von Pointer/Array

dannyesl

Mitglied
Hi,
zur Situation:
Ich habe 2 Klassen. In der ersten Klasse habe ich "int menge[10]" und "string bezeichnung[10]"
und dazu "int *mengePtr" "string *bezeichnungPtr" als pointer auf diese arrays.
Die Werte werden durch eine Methode der ersten Klasse eingegeben.
In der zweiten Klasse habe ich nun eine Methode, in der diese ausgegeben werden sollen.
Ich habe mir das so gedacht, dass ich den Wert per pointer an die zweite Klasse übergebe.
Code:
for(int i=0;i<P;i++)
		{
		cout << i;
		cout << "\t" <<  &bezeichnung[i];
		cout << "\t" << &menge[i] << endl;
		}
Ausgegeben kriege ich aber immer nur die Adresse...Warum?

Danach soll in der Methode die Menge aufaddiert werden. Also die derzeitige Menge + Eingabewert = Menge
und dann wieder in diesem Array abgespeichert werden
Code:
&menge[position] += einbuchungsmenge[position];
Das geht aber iwie nicht, er sagt mir dann "kein += Operator stimmt mit diesem operand überein"....****?

Ich habe im Konstruktor das hier gemacht:
Code:
Buchung::Buchung(Artikel *menge, Artikel *bezeichnung)
{
	mengePtr = &menge;
	bezeichnungPtr = &bezeichnung;
}
Damit soll der Pointer initialisiert werden...muss ich da die Arrays mit angeben?
Muss ich in der Klasse die Pointer-Variable auch als Pointer machen? (int *mengePtr[10] oder int *mengePtr)

Bin ein blutiger anfänger....habe erst vor 7 Wochen angefangen hiermit im Studium:rolleyes:
Also bitte habt nachsehen, wenn was nicht so ganz in ordnung ist ;-)
 
Lass einfach mal die ganzen & weg.
& steht für "AdresseVon", sprich mit
cout << &irgendwas;
bekommst du nicht den Wert von irgendwas, sondern die Speicheradresse, wo der Wert steht.
 
Zum ersten Code: Wenn du nicht die Adresse willst, warum schreibst du dann & vor bezeichnung[ i ] ?

Gilt auch für den zweiten Code. Weg mit dem & .
Du versuchst eine Adresse mit einbuchungsmenge zu addieren...
 
Danke schonmal für die Antwort :)
Das hatte ich mir auch schon gedacht, nur dann sagt er mir wieder das mit den Operanden sowohl die "<<" als auch "=" oder "+="....muss ich da noch iwo was definieren oder initialisieren?
Sind die Variablen im Konstruktor richtig übergeben?
 
Aber gerne doch ;) Ihr kriegt alles was ihr braucht...
Code:
class Artikel
{
public:
	Artikel();

	void ArtikelAnlegen();
	void Lageruebersicht();
	void Nullung();
	
	void setBezeichnung();
	void setPreis();
	void setMenge();
	void setArtikelnummer();
	
	string getBezeichnung();
	float getPreis();
	int getMenge();
	int getArtikelnummer();

private:
	string bezeichnung[10];
	float preis[10];
	int artikelnummer[10];
	int menge[10];
	int *mengePtr;
	string *bezeichnungPtr;

};

Code:
class Buchung
{
public:
	Buchung(Artikel *menge, Artikel *bezeichnung);

	void einbuchung(Artikel *mengePtr, Artikel *bezeichnungPtr);
	void ausbuchung(Artikel *mengePtr, Artikel *bezeichnungPtr);
	void buchungsUebersicht(Artikel *mengePtr, Artikel *bezeichnungPtr);
	void Nullung();

	void setDatum();
	void setEinbuchungsmenge();
	void setAusbuchungsmenge();

	string getDatum();
	int getEinbuchungsmenge();
	int getAusbuchungsmenge();

private:	
	string datum[10];
	int einbuchungsmenge[10];
	int ausbuchungsmenge[10];
	Artikel *mengePtr;
	Artikel *bezeichnungPtr;
};
 
Versuchs mal ohne Pointer, das ist zwar auch nicht richtig, weil du dann mehrere Kopien der Werte im Speicher hast, aber wenn dich die Pointer offensichtlich verwirren, machs mal ohne, damit du wenigstens die Logik richtig hast.
Etwa so:

Code:
Buchung::Buchung(Artikel menge, Artikel bezeichnung)
{
    menge[position] += einbuchungsmenge[position]; 
}

Wenn das erstmal geht, kannst du am Ende immer noch die Kopieen durch Pointer ersetzen.
 
Zurück