第一次从现有的main中编写头文件和.cpp;没有输出
First time writing header file and .cpp from existing main; no output
这是我第一次为现有的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;
}
相关文章:
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 命名空间中具有.h和.cpp文件的类
- 为什么我的主文件.cpp不打印头文件中的任何内容
- 生成文件错误 - 找不到文件 - *.cpp
- 如何在文件.cpp gtkmm中声明小部件
- 没有实现文件(.cpp)的派生类
- 如何使用"CMakeLists.txt"中的add_library将整个文件(.cpp,.h等)包含在目录中
- 如何在Linux / Windows操作系统上使用文件*.cpp一步编译下面的代码
- 关于 Linux .so 文件无法链接到主文件.cpp文件
- 文件.cpp从Windows到Linux
- Ubuntu C++ 编译器错误: g++: 错误: 文件.cpp: 没有这样的文件或目录
- 如何将文件.cpp编译为本机编译
- 使用模板类时,似乎无法包含除 main 以外的任何 cpp 文件.cpp
- 无法编译C++文件.cpp。C++98模式
- 为什么C++头文件不需要包含实现文件 (.cpp)
- 如何访问位于独立文件(.cpp)中的非成员函数
- 如何在Visual Studio Code中通过键盘快捷键切换头文件/cpp文件
- 如何将数据从stringstream写入文件(CPP)
- 为什么filestream不把空白写入文件cpp ?