Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 10:56

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



kleines problem

Discussion on kleines problem within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Oct 2007
Posts: 856
Received Thanks: 35
kleines problem

hey leute,
kleines problem
undzwar in dem code(ist nur ein sinnfreies beispiel)
das problem ist das die ausgaben vom Array A in klasse B schwachsinnig sind.
Code:
class A{
	int *x;
public :
	A(){
		x = NULL;
	}
	A(int x){
		this->x = new int(x);
                cout << *this->x << endl; // 41 85 72
	}
	int getx(){ 
		return *x; }

	~A(){ delete x; }
};

class B{
public:
	A a[20];
	int Anz;
	B(int Anzahl){
		Anz = Anzahl;
		for (int i = 0; i < Anz; i++){
			a[i] = A(rand() % 101);
		}
		for (int i = 0; i < Anz; i++){
			cout << i + 1 << ".\t" << a[i].getx() << endl; // sollte 41 85 72 sein ist aber schwachsinn^^
		}
	}
};

int _tmain(int argc, _TCHAR* argv[])
{
	B a(3);
	return 0;
}
die Ausgabe:
41
85
72
1. -17891602
2. -17891602
3. -17891602

1, 2 und 3 sollten genau wie die oberen zahlen sein.
Ich weiß das das problem von dem delete in klasse A kommt.
die Lösung die ich dafür hätte wäre das ich extra eine set funktionen für x setzte und dann a[i].setx(rand()%101) benutze.
Aber am liebsten würde ich das wenn möglich mit dem init konstruktor lösen den ich habe.
Ist das denn möglich?
Slade100 is offline  
Old 12/12/2015, 22:57   #2
 
MuffinMario's Avatar
 
elite*gold: 0
Join Date: Apr 2011
Posts: 895
Received Thanks: 558
Der Dekonstruktor wird auch aufgerufen, wenn du ihn nicht selbst mit delete aufrufst. Zum Beispiel beim Ende von main.
Ich bin mir hier echt nicht sicher, aber ich glaube keinen Pointer zu benutzen wird hier auch reichen. Nebenbei bemerkt kommt diese komische negativ-Zahl davon, dass dem Wert einer Adresse, wo der Pointer hinzeigt keine gültige Zahl ist bzw. nicht initalisiert ist. Hier erkennt man sofort, dass das delete, wie du schon erwähntest, ein Problem spielt. Du könntest natürlich auch einen smart pointer (auto_ptr) benutzen, welcher dir das Leben hoffentlich leichter machen würde. Aber hier wird der Konstruktor vor der Rückgabe einer Memberfunktion aufgerufen. Ich kenne mich jetzt intern damit nicht wirklich aus und ich habe hier einfach mal ein bisschen geraten. Also einfach das gleiche machen ohne einen Pointer löscht den Speicher auch ohne Destruktor
Code:
class A {
	int x;
public:
	A() {}
	A(int i) {
		x = i;
		std::cout << x << std::endl; // 41 85 72
	}
	int getx() {
		return x; // returns value without memory leak
	}
};
MuffinMario is offline  
Thanks
2 Users
Reply


Similar Threads Similar Threads
Kleines Problem...
04/17/2013 - Metin2 Private Server - 3 Replies
Hallo E*pvpler, Ich wollte heute den Mod hier einfügen: MOD-Easy-Chatblock und Kick Nur ich krieg immer wieder diese Syserr Meldung: 0417 15:54:04392 :: networkModule.py(line:194) SetSelectCharacterPhase system.py(line:130) __pack_import
kleines mt2-Problem
01/23/2013 - Metin2 Private Server - 0 Replies
Oder eher ein W8 Problem :D wenn ich eine .bat mit dem Inhalt "@echo off start metin2client.bin " ausführe, dann kommt... http://i.epvpimg.com/9nPfe.jpg
[PSC]Kleines PSC-Problem
03/20/2011 - Metin2 - 4 Replies
Hi Leute habe ein kleines Problem mit meiner PSC. Ich hab mir eine 25CHF(Schweizer Franken)PSC gekauft und wollte mir Yang kaufen auf Poorme.de. Jedoch frage ich mich wie die das mit dem umrechnen von den CHF machen, mit dem aktuellen Kurs? Steht 1CHF --> 0.78Cent. Und kann ich Poorme überhaupt trauen? Wenn nicht schlagt mir bitte was besseres vor. PS: 1st Beitrag mfg .G-Power



All times are GMT +1. The time now is 10:56.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.