2

这是我第一次为现有的 main 创建头文件和 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

全局变量初始化为 0,请参见此处

所以你selected_floor是 0 和更小my_floor

编辑:

乍一看,我想念你有一个会员selected_floor和一个全球会员。我认为你不需要全局的。

你缺少的是:

// don't forget the default constructor
elevator::elevator ()
: my_floor(0)
, selected_floor(0)
{}

elevator::elevator (int initFloor)
: my_floor(initFloor)
, selected_floor(0)
{}

//modifiers
void elevator::select (int newFloor)
                         //^^^^^^^^
{
    selected_floor = newFloor;  // set you selected_floor to the value you want to select
  //^^^^^^^^^^^^^^^^^^^^^^^^^^
    while(my_floor < selected_floor)
    cout << "Going up to " <<  ++my_floor << endl;
}
于 2013-06-05T00:07:16.913 回答
0

它不会执行,因为您没有启动 selected_floor 并且您正在使用它,它的值为 0。因此,当您运行循环时,初始值为 1 的“my_floor”正在针对已经大于零的零进行测试,即屏幕上没有输出。

你应该做的是,首先给 selected_floor 赋值,然后调用 select 函数。您可以在执行循环之前将值分配给 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 回答
0

有几件事不清楚。从cpp。

int selected_floor; // 你有一个与私有变量同名的全局变量。你打算做什么具体的事情?

电梯; //这甚至不应该编译。

这是什么 ?//修饰符 void lift::select (int)

也许你想要这样的东西。无效电梯::select (int floor) { selected_floor = floor;

去掉全局变量,改成::select,应该没问题。

于 2013-06-05T00:19:03.343 回答