2016-10-01 20 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

你想知道爲什麼沒有打印? 'Triunghi(int a,int b,int c,char * msg)'重載永遠不會在你的代碼中調用。 – LogicStuff

+0

做一些探索性編程。使每個呼叫打印出「在這裏的第x行」消息,並嘗試瞭解您的程序的控制流程。 –

回答

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

這不符合你的想法。 tri是使用默認構造函數創建的,因此您的所有成員都使用其類內默認值進行設置,即0。然後,您創建臨時對象Triunghi,甚至不使用它。你可能會想要做的卻是:

Triunghi tri(1,2,3); 

然後Perimetru()回報6預期。