0

我不知道发生了什么,除非我输入的数字都是 type ,否则我无法输入第二行数字int。也许数据类型有问题。我总是得到结果的一半,例如错误代码-858993460。但是,当我输入所有1s 时,它会正确。由于我无法在互联网上搜索有用的东西,我希望有人可以解决这个问题(或者只是回答我无知的问题)。如果有人可以提供帮助,我将不胜感激。先感谢您。

#include<iostream>
using namespace std;

class Building {
public:
    int m_nFloor;
    int m_nRoom;
    double m_fArea;
    Building(int, int, double);
};
Building::Building(int floor, int room, double area) {
    this->m_nFloor = floor;
    this->m_nRoom = room;
    this->m_fArea = area;
}

class Housing :public Building {
public:
    int m_nBedRoom;
    int m_nBathRoom;
    Housing(int, int, double, int, int);
};
Housing::Housing(int floor, int room, double area, int bedroom, int bathroom):
    Building(floor,room,area)
{
    this->m_nBedRoom = bedroom; 
    this->m_nBathRoom = bathroom;
}

class Office :public Building {
public:
    int m_nFireFighter;
    int m_nTelephone;
    Office(int, int, double, int, int);
};
Office::Office(int floor, int room, double area, int firefighter, int telephone) :
    Building(floor,room,area)
{
    this->m_nFireFighter = firefighter;
    this->m_nTelephone = t

int main() 
{
    int floor1, room1, bedroom, bathroom;
    short area1;
    int floor2, room2, firefighter, telephone;
    short area2;
    cin >> floor1 >> room1 >> area1 >> bedroom >> bathroom;
    cin >> floor2 >> room2 >> area2 >> firefighter >> telephone;
    Housing hou(floor1, room1, area1, bedroom, bathroom);
    Office Off(floor2, room2, area2, firefighter, telephone);
    return 0;
}
4

2 回答 2

0

尝试使用单一数据类型来解决此类问题,除非它确实要求对特定变量单独使用short和定期处理。int

通常,您还可以定义一个宏 pre-hand 以避免每次要更改数据类型时都重新编写它们:

#include <iostream>
#include DT unsigned long int 
// change data type as per your requirement above.
.
.
.
int main() 
{
    DT floor1, room1, bedroom, bathroom, area1, floor2, room2, firefighter, telephone, area2;
    std::cin >> floor1 >> room1 >> area1 >> bedroom >> bathroom;
    std::cin >> floor2 >> room2 >> area2 >> firefighter >> telephone;
    Housing hou(floor1, room1, area1, bedroom, bathroom);
    Office Off(floor2, room2, area2, firefighter, telephone);
    return 0;
}
于 2020-04-07T08:49:10.937 回答
0

为了更容易重现,将 cin 更改为 ifstream,在文件中创建数据并以这种方式进行试验。然后,如果您遇到问题,请在此处发布数据。

它还将帮助您与这里的社区一起调试案例。使用 cin 不会让我们知道您输入的是什么,这意味着如果您输入一个非数字,即使您的代码是正确的,它也会失败。

于 2020-04-07T08:15:39.667 回答