第一次从现有的main中编写头文件和.cpp;没有输出

First time writing header file and .cpp from existing main; no output

本文关键字:文件 cpp 输出 main 第一次      更新时间:2023-10-16

这是我第一次为现有的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;
    }

全局变量初始化为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;
}

有几件事不清楚。

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

电梯;//这甚至不能编译

这是什么?//修改器Void elevator::select (int)

也许你想要这样的东西。Void elevator::select (int floor) {Selected_floor = floor;

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

它将不会执行,因为您没有初始化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;
    }