2017-04-12 21 views
-5

これは、プログラムが領域と周囲を計算するようにするための学校の作業です。 "予期せぬ;空白の前に"、 "予期せぬ第一次式が無効になる"というコンパイラ/構文エラーです。 問題がヘッダーファイルにあるかどうかわかりません。ここで私は間違いをしていますか?

#include"shape.h" 
#include<iostream> 
using namespace std; 


Shapes::Shapes()//base class 
    {status=true;} 

    void Shapes::launch() 
     {cout<<"Which figure are we working on ?"<<endl; 
     cout<<"Square(1),Triangle(2),Rectangle(3);"<<endl; 
     cout<<"Circle(4) or regular polygons(5)"<<endl; 
     cin>>a;} 

    void Shapes::aime()//mistake here. 
     {    //switch to decide shape 
     if (status) switch(a){ 
     case'1':{Square::Square() 
     void Square::readSide()//mistake too. 
     {cout<<"The length of one side in metres : \t"; 
     cin>>side;} 
    void Square::getsPerimeter()//another mistake. 
     {cout<<"The perimeter is "<<(side*4)<<" metres."<<endl;} 
     void Square::getsArea(){cout<<"The Area is "<<(side*side)<<" squared 
     metres."<<endl;}//again. 
     } 


case'2':{Triangle::Triangle() 
    void Triangle::readData()//mistake 
    {cout<<"The length of the base in metres : \t"; 
    cin>>base; 
    cout<<"The length of the height in metres : \t"; 
    cin>>height;} 
    void Triangle::gettArea()//error 
    {cout<<"The Area is "<<(height*base/2)<<endl;} 
    } 

case'3':{Rectangle::Rectangle() 
void Rectangle::readDatar()//error 
{cout<<"The length in metres : \t"; 
cin>>length; 
cout<<"The width in metres : \t"; 
cin>>width;} 
void Rectangle::getrArea()//error 
{cout<<"Area is "<<(length*width)<<" squared metres."<<endl;} 
void Rectangle::getrPerimeter() 
{cout<<"Perimeter is "<<(2*(length+width))<<" metres."<<endl;} 
} 

case'4':{Circle::Circle() 
void Circle::readRadius(){cout<<"The length of the radius in metres : \t"; 
cin>>radius;} 
void Circle::getCirc()//error 
{cout<<"Circumference is "<<(2*3.14159*radius)<<" metres."<<endl;} 
Circle::getcArea()//error 
{cout<<"Area is "<<(radius*radius*3.14159)<<" squared metres."<<endl;} 
} 


case'5':{Polygon::Polygon() 
void Polygon::readDatap(){cout<<"The number of sides : \t";//error 
cin>>num; 
cout<<"The length of one side in metres : \t"; 
cin>>pside; 
cout<<"The length of the apothem in metres : \t"; 
cin>>apothem;} 
void Polygon::getpPerimeter()//error 
{cout<<"The perimeter is "<<(num*pside)<<" metres."<<endl;} 
void Polygon::getpArea()//another error 
{cout<<"The area is "<<(num*pside*apothem/2)<<" squared metres."<<endl;} 
} 
} //switch() terminated 
} //aime() terminated 
bool Shapes::run(){return status;} 
//to keep the app open 
//the classes are derived classes of the base class:Shapes 
+2

こんにちは、歓迎:

#include <iostream> int main(int argc, char** argv) { switch(argc) { case 1: void example(){ std::cout<< "The number of sides : \t"; } break; } } 

これは、あなたがやっているために必要なものである:ここで何をやっているの例は、(これは間違っある)です。あなたの質問を編集して、[最小、完全、および検証可能](http://stackoverflow.com/help/mcve)の例を提供してください。 –

+0

コードを編集し、より良い方法で字下げしてください。また、最小限のコード例でエラーを再現しようとする必要があります。 – OutOfBound

+0

エラーに行番号が含まれていることは間違いありません。 – YSC

答えて

2

あなたは単にC++で許可されていないswitch文の内部で関数を定義している(ラムダ/ファンクタを除いて、彼らは別の時間のためのトピックです)。

switch文の外で関数を定義し、そこから呼び出す必要があります。 StackOverflowのに

#include <iostream> 

void example() { std::cout<< "The number of sides : \t"; } 

int main(int argc, char** argv) { 
    switch(argc) { 
    case 1: 
     example(); 
     break; 
    } 
} 
関連する問題