2016-10-21 16 views
0

MLの2クラスがそれぞれ.header.cppのファイルを持っています。スイッチの場合、C++ get/setが値を取得しない

は、クラスLで取得/設定メソッド

class L // this is in L.h file 
{ 
     private: 
    int A; 
    float B; 

    public: 
     A(); 

     A(int,float); 

     void setA(int A); 
     int getA(); 

     void setB(int B); 
     int getNoOfEarthLikePlanets(); 

}; 

//L.cpp// 

L::L() // default constructor 
{ 
    A = 0; 
    B = 0; 
} 

L::L(int aA,float bB) non-default constructor 
{ 
    A = aA; 
    B = bB; 
} 

void L::setA(int aA) // set A 
{ 
    A = aA; 
} 

int L::getA() // get A 
{ 
    return(A); 
} 

void L::setB(float bB) //set B 
{ 

    B = bB; 
} 

float L::geB() // get B 
{ 
    return(B); 
} 

は私のクラスMあります

#include "L.h" 
void M::mainMenu() 
{ 
    int choice = 0; 
    cout<<" 1) enter your A and B:"endl; 
    cout<<" 2) Display your An B :"endl; 
    cin>>choice; 

    yourChoice(choice); 


} 
void M::yourChoice(int choice) 
{ 
    const int size = 50; 
    int cinA; 
    int cinB; 
    static int count = 0; 
    L newL[size]; 

while(choice != 999)   
    { 
     switch(choice) 
     {    
      case 1: 
      {       
       while(count<SIZE) 
       {     
       cout<<"What is A : "; 
       cin>>cinA; 
       newL[count].setA(cinA); 
       cout<<"What is B: "; 
       cin>>cinB; 
       newL[count].setA(cinA); 
       ++count; 
        //******i tried to cout my newL[count].getA(); it displays a blank too********* 
       mainMenu();  
       cin>>choice; 
       break;  
       }; 
     //Even if i bring newL 
      } // end of case 1 
     break; 
     case 2: 
     { 
      for(int x = 0;x<size;x++) 
        {       
      cout<<newL[x].getA()<<endl; //Prints a blank 
        }  
     }//end of case 2 
     }//end of switch 
    }//end of while 

私は/ケース1には、ユーザー入力を取得するように設定し、それをプリントアウトを取得を使用していますケース2。しかし、ケース1の詳細を入力した後、ケース2に行くと何も表示されず、0も空白になります。私は呼び出しの間に何かするかもしれないと思ったので、私の型変数の前に静的を置いてみました。

また、値を入力した直後のケース1ではcoutgetA()を試しましたが、空白も表示されます。私は何が欠けているのですか?私が書いた他のコードがこれを起こすかもしれないと感じるなら、Plsはより詳細なコードを要求します。これはその一部にすぎません。私int main()

私はちょうどmainMenu();

+2

たび表示したい場合は、mainMenu(true);を呼び出すことができますこの方法「yourChoice(選択肢);」それは、クラスLの新しい配列を作成しています。newL [size]をstaticにして試してみることはできますか?また、case1ブロックでは、 "++ count;"の前に印刷していることを確認してください。 – MayurK

+0

以上:「M」のクラスメンバーにしてください!!あなたはそこにオブジェクトを持っています –

+0

あなたの本の関数と変数の範囲についてもっとお読みください。彼らはあなたのような関数呼び出しを扱っています。 – molbdnilo

答えて

0
while(choice != 999)   
    { 
     switch(choice) 
     {    
      case 1: 
      {       
       while(count<SIZE) 
       {     
       cout<<"What is A : "; 
       cin>>cinA; 
       newL[count].setA(cinA); 
       cout<<"What is B: "; 
       cin>>cinB; 
       newL[count].setA(cinA); 
       ++count; 
        //******i tried to cout my newL[count].getA(); it displays a blank too********* 
       YOUR TROUBLE MAKER>>>>>mainMenu();  
       cin>>choice; 
       break;  
       }; 
     //Even if i bring newL 
      } // end of case 1 
     break; 
     case 2: 
     { 
      for(int x = 0;x<size;x++) 
        {       
      cout<<newL[x].getA()<<endl; //Prints a blank 
        }  
     }//end of case 2 
     }//end of switch 
    }//end of while 

に取り組んでいますオリジナルのnewLとは関係がありません。元のmainMenuでインスタンス化されています。 mainMenu自体は別のyourChoiceを呼び出します。

勧告

ブールモードの追加はちょうどあなたが入力が無効になっているメインメニューの表示をしたいことを確認することです。あなたが入力してmainMenu(false);をしたい場合にのみ

void M::mainMenu(boolean mode) 
{ 
    cout<<" 1) enter your A and B:"endl; 
    cout<<" 2) Display your An B :"endl; 

    if(mode) 
    { 
     int choice = 0; 
     cin >> choice; 
     yourChoice(choice); 
    } 
} 
0

forgivenprog33442 を実行して、私は何もあなたのコードので、プリントアウトされていないと思うあなたが事故で再帰を作り、右yourChoice方法であなたの++countmainMenu()を呼び出しているので、実際に2をケースに行くことはありません。 yourChoiceメソッドのchoice変数からmainMenu()を削除し、choiceをクラスにprivate変数として宣言してください。例えば

、あなたはループのためにこれを行うことが選択範囲にあるとき、あなたはトラブルメーカーのラインは、したがって、newLアレイの別のセットをはmainMenuの新しいインスタンスを作成すること

while(choice > 0 && choice < 3) 
{ 
    switch(choice) 
    { 
      case 1: 
      while(count < SIZE) 
      { 
      //loop until all number are set 
      //then ask for choice 
      //make sure you check if space in array 
      //or use a vector so it can resize automatically 
      } 
      case 2: 
      //print your values 
    } 

} 
関連する問題