2016-10-01 3 views
-4

Ich kann nicht sehen, das Problem in meinem Code zu finden. Noch die Lösung im Internet. Ich sehe, dass ich den Code in einer anderen Art und Weise erstellen können, aber ich muss wissen, wie man mit ihr arbeiten wie folgt geschrieben:Wie Klassen in C++ verwenden?

class Triunghi{ 
    int l1=0;//latura1 
    int l2=0;//latura2 
    int ba=0;//baza 
    int p=0;//perimetru 
public: 
    Triunghi(){} 
    Triunghi(int a):l1(a){} 
    Triunghi(int a,int b):l1(a),l2(b){} 
    Triunghi(int a,int b,int c):l1(a),l2(b),ba(c){} 
    Triunghi(int a,int b,int c,char *msg):l1(a),l2(b),ba(c){ 
     cout<<msg<<""<<l1<<l2<<ba<<endl; 
    } 
    Triunghi(Triunghi &A){ 
    l1=A.l1; 
    l2=A.l2; 
    ba=A.ba; 
    } 
    ~Triunghi(){ 
    } 
    int Perimetru() 
    { 
     p=l1+l2+ba; 
     return (p); 
    } 
}; 

Es funktioniert gut, es gibt keine Fehler, aber ich kann nicht scheinen, Wert zu geben l1 , l2 und ba, um sie in der Funktion 'Perimetru' zu verwenden. So sieht mein Haupt aus.

int main() 
{ 
    Triunghi tri; 
    Triunghi(1,2,3); 
    tri.Perimetru(); 
    return 0; 
} 

Wie funktioniert es?

+2

Sie wundern sich, warum nichts gedruckt wird? Die Überladung 'Triunghi (int a, int b, int c, char * msg)' wird in Ihrem Code nie aufgerufen. – LogicStuff

+0

Ein bisschen explorativ programmieren. Machen Sie bei jedem Anruf eine Nachricht "hier bei Zeile x" und versuchen Sie, den Steuerungsablauf Ihres Programms zu verstehen. –

Antwort

0
Triunghi tri; 
Triunghi(1,2,3); 

Dies tut nicht, was Sie denken, dass es tut. tri wird mit dem Standardkonstruktor erstellt, sodass alle Ihre Mitglieder mit ihren Standardwerten in der Klasse festgelegt werden, dh 0. Dann erstellen Sie das temporäre Objekt Triunghi, und Sie verwenden es nicht einmal. Was Sie vielleicht wollte stattdessen tun ist:

Triunghi tri(1,2,3); 

Dann Perimetru() kehrt 6 wie erwartet.