2016-10-01 2 views
-4

Я не вижу, чтобы найти проблему в моем коде. Не решение в Интернете. Я могу видеть, что я могу создать код по-другому, но я должен знать, как работать с ним написано так:Как использовать классы в C++?

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); 
    } 
}; 

Он отлично работает там нет ошибок, но я не могу показаться, чтобы дать значение l1 , l2 и ba, чтобы использовать их в функции Perimetru. Вот как выглядит мой главный.

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

Как это сделать?

+2

Вам интересно, почему ничего не печатается? 'Trunghi (int a, int b, int c, char * msg)' overload никогда не вызывается в вашем коде. – LogicStuff

+0

Сделайте немного поискового программирования. Сделайте каждый звонок распечатайте сообщение «здесь, на линии x» и попытайтесь понять поток управления вашей программой. –

ответ

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

Это не делает то, что вы думаете. tri создается с помощью конструктора по умолчанию, поэтому все ваши члены устанавливаются со значениями по умолчанию в своем классе, что означает 0. Затем вы создаете временный объект Triunghi, и вы даже не используете его. То, что вы, возможно, хотели сделать вместо этого:

Triunghi tri(1,2,3); 

Затем Perimetru() возвращается 6, как и ожидалось.