2016-05-22 18 views
2

の後に宣言されたクラスのオブジェクトを使用すると、同じファイルで複数のクラスを宣言する必要があり、paricoularでは宣言する前にこれらのクラスのオブジェクトを使用する必要があります。C++何らかの理由で

#include<iostream> 
using namespace std; 

class square{ 

    double side; 
    double area; 
    square(double s){ 
     side = s; 
    } 

    void calcArea(){ 
     area = side*side; 
    } 

    void example(){ 
     triangle t(2.3,4.5); 
     t.calcArea(); 
    } 

}; 

class triangle{ 

    double base; 
    double height; 
    double area; 

    triangle(double s,double h){ 
     base = s; 
     height = h; 
    } 

    void calcArea(){ 
     area = (base*height)/2; 
    } 
}; 

int main(){ 
} 

squareクラスのexample()メソッドでは、使用後に宣言されたtriangleクラスに属するオブジェクトを使用しています。 このコードを処理する方法がありますか?

+0

シークする前にコードを正しくインデントしてください助けてください。 –

+2

私はなぜこれがdownvoted表示されません。それは基本的なものですが、それはよく形成された質問です。しかし、それはおそらく他のどこかで答えられ、したがって重複しているでしょう。 – OMGtechy

答えて

3

squaretriangleが必要ですが、squaretriangle必要としない、あなたは、単にクラス定義の順序を変更することができるので:

class triangle { 
    // ... 
}; 

class square { 
    // ... 
}; 

あるいは、exampletriangleを必要とsquareで唯一のものであることから、定義をexampleの定義後triangle

class square { 
    // ... 
    void example(); 
}; 

class triangle { 
    // ... 
}; 

void square::example() { 
    triangle t(2.3,4.5); 
    t.calcArea(); 
} 
+0

定義する前に、必要なクラスを宣言することもできます。 – RyanP

+1

フォワード宣言はここでは役に立ちません: 'triangle t(2.3,4.5);' – emlai

関連する問題