001
21.08.2003, 01:00 Uhr
Pablo
Supertux (Operator)
|
Ich würde es so machen:
C++: |
class A { public: int* m_a; A(int n) { m_a = new int[n]; } A(int n, int m) { A tmp(n*m); *this = tmp; } };
|
Ich hab es getestet und bei mir hat es funktioniert. Es wird tatsächlich kompiliert (oder? ). Das Problem ist, dass this->A(n*m) ein neues Objekt erzeugt, das nicht this ist, und deshalb geht da verloren (ich bin nicht sicher von der Erklärung). Aber ich bin sicher, dass mein Code funktioniert.
Ich glaube, die beste Lösung wäre ein Copy-Konstruktor, oder? Mal sehen, was die anderen dazu sagen.
Ich hab damit ausprobiert:
C++: |
#include <iostream> using namespace std; class A { public: int k; A(); A(int); A(int,int);
};
A::A() { this->k=0; }
A::A(int a) { A tmp(a,10); *this = tmp; }
A::A(int a, int b) { this->k=a*b; }
int main() { A a,b(8),c(5,8); cout << a.k << " " << b.k << " " << c.k << endl; }
|
Ausgabe: 0 80 40 -- A! Elbereth Gilthoniel! silivren penna míriel o menel aglar elenath, Gilthoniel, A! Elbereth! Dieser Post wurde am 21.08.2003 um 01:03 Uhr von Pablo Yanez Trujillo editiert. |