2016-11-08 3 views
-3

nicht zurückgeben Ich mache ein Klasse geerbtes Programm in C++. Seine Funktion besteht darin, jedesmal, wenn ein Dreieck stimmt, zu bestimmen und seine Fläche zu berechnen. HierKann Ergebnis von int Funktion

ist das Programm:

#include <iostream> 

using namespace std; 

class Puncte 
{ 
public: 
int x1,y1; 
int x2,y2; 
int x3,y3; 
Puncte(int a, int b, int c, int d, int e, int f):x1(a),y1(b),x2(c),y2(d),x3(e),y3(f){} 
void AfisareP() 
{ 
cout<<x1<<y1<<x2<<y2<<x3<<y3<<endl; 
} 
}; 
class Latura 
{ 
protected: 
int l1, l2, l3; 
public: 
    void LatimeaL(int a, int b, int c) 
    { 
     l1 = a; 
     l2 = b; 
     l3 = c; 
    } 
}; 
class Triunghi: public Latura 
{ 
public: 
    int AriaTrDr() 
    { 
     return l1*l3/2; 
    } 
}; 

int main() 
{ 
Puncte p(2,2,2,2,2,2); 
Latura l; 
l.LatimeaL(1,2,4); 
Triunghi t; 
if (p.x1 == p.x3 && p.y1 == p.y2) 
{ 
    cout << "Triunghi dreptunghic!" << endl; 
    cout << t.AriaTrDr() << endl; 
} 

return (0); 
} 

Everthing arbeitet gut, aber es funktioniert nicht das richtige Ergebnis zeigen, aber die Adresse und ich weiß nicht, wie es zu beheben.

Dies ist das Ergebnis.

Triunghi dreptunghic! 
513242112 
+1

In der Klasse 'Latura' werden die' int' Member nach der Initialisierung mit * unbestimmten Werten * belassen. –

+1

Von dem, was ich sehen kann, sind 'Latura l;' und nachfolgende 'l.LatimeaL (1,2,4);' sinnlos in 'main()'. Das sollte entfernt werden und 't.Latimeal (1,2,4);' sollte der Erklärung von 't folgen. – WhozCraig

+0

Es sieht so aus, als ob Sie denken, dass die Objekte 'p',' l' und 't' in irgendeiner Weise verbunden sind. Sie sind drei völlig unabhängige Objekte. – molbdnilo

Antwort

0

Sie rufen l.LatimeaL(1,2,4); auf dem Objekt l.

Das Objekt t wird mit Triunghi t; erstellt. Es wird nicht durch Aufruf der Funktion Latimeal initialisiert. Daher erhalten Sie einen undefinierten Wert.

Sie müssen die t.Latimeal(1,2,4) Funktion initialisieren, nachdem Sie das Objekt erstellt haben.

Verwandte Themen