2

既存のメインのヘッダーと cpp ファイルを作成するのは初めてです。プログラムを実行できますが、出力がありません。誰かがトラブルシューティングを手伝ってくれるなら、とても感謝しています。このプログラムは、エレベーターをシミュレートすることになっています。ありがとう!

これが私が与えられたものです:

int main()

{

  elevator aLift(1);
 aLift.select(5);
  aLift.select(3);


  system("pause");
  return 0;
}

これが私のヘッダーファイルです。

#ifndef elevator_h   
#define elevator_h  
#include <string>    
using namespace std; 



class elevator {
public: //operations

elevator();
//coonstructors
elevator (int initFloor);

//modifiers
void select (int newFloor);
//my floor is increased/decreased by difference.

//accessors
int getFloor() const;
//gets current floor number



private: //state
    int my_floor;
    int selected_floor;



};
#endif   // ifndef elevator_h

最後に、これが私のcppファイルです

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


int selected_floor;
elevator;
elevator::elevator (int initFloor)
//coonstructors
{
    my_floor=initFloor;


}

    //modifiers
    void elevator::select (int)
    {
        while(my_floor < selected_floor)
    cout << "Going up to " <<  ++my_floor << endl;
    }
    //my floor is increased/decreased by difference.

    //accessors
    int elevator::getFloor() const
    { 
        return selected_floor;
    }
4

3 に答える 3

0

明確でないことがいくつかあります。cpp から。

int selected_floor; // プライベート変数と同じ名前のグローバル変数があります。具体的にやりたいことはありますか?

エレベーター; //これはコンパイルさえすべきではありません。

これは何ですか ?//修飾子 void エレベーター::選択 (int)

こういうのが欲しかったのかもしれません。void エレベーター::select (int フロア) { selected_floor = フロア;

グローバル変数を取り除き、::select に変更を加えます。これで問題ありません。

于 2013-06-05T00:19:03.343 に答える
0

selected_floor を開始しておらず、それを使用しているため、実行されません。値は 0 です。したがって、ループを実行しているとき、初期値が 1 の「my_floor」は、すでにゼロより大きいゼロに対してテストされています。つまり、画面に出力はありません。

すべきことは、最初に selected_floor に値を割り当ててから、select 関数を呼び出すことです。ループを実行する前に、選択関数自体で selected_floor に値を割り当てることができます。

    void elevator::select (int newFloor)
    {
        selected_floor = newFloor ;
        while(my_floor < selected_floor)
        cout << "Going up to " <<  ++my_floor << endl;
    }
于 2013-06-05T00:16:06.380 に答える