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

探検的なプログラミングを少ししてください。すべての呼び出しを "here at line x"というメッセージで印刷し、プログラムの制御フローを理解しようとします。 –

答えて

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

これは、あなたが思う通りです。 triはデフォルトのコンストラクタで作成されるため、すべてのメンバーがクラス内のデフォルト値、つまり0で設定されます。次に、テンポラリオブジェクトTriunghiを作成し、それを使用することはありません。あなたが代わりにやってみたかったかもしれないことである。そして、

Triunghi tri(1,2,3); 

Perimetru()戻り6予想通り。

関連する問題