Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么我有一个'=';对输出和两个笑脸进行签名,而不是正确的输出?C++;_C++_Class - Fatal编程技术网

C++ 为什么我有一个'=';对输出和两个笑脸进行签名,而不是正确的输出?C++;

C++ 为什么我有一个'=';对输出和两个笑脸进行签名,而不是正确的输出?C++;,c++,class,C++,Class,这是一个更新,以显示以下更改和详细信息。 下面是一个指向输出快照的链接 #包括 #包括 #包括 #包括 使用名称空间std; //创建HotelRoom类 头等舱酒店 { 私人: char*ptr_客人; char room_编号[3]; 室内容量; 国际占领联盟地位; 每日双倍的费用; 公众: HotelRoom(char roomNumber[],国际客房容量,双人房价,char*ptr_名称,国际职业状态); ~HotelRoom(); 无效显示_编号(); void Display_G

这是一个更新,以显示以下更改和详细信息。 下面是一个指向输出快照的链接

#包括
#包括
#包括
#包括
使用名称空间std;
//创建HotelRoom类
头等舱酒店
{
私人:
char*ptr_客人;
char room_编号[3];
室内容量;
国际占领联盟地位;
每日双倍的费用;
公众:
HotelRoom(char roomNumber[],国际客房容量,双人房价,char*ptr_名称,国际职业状态);
~HotelRoom();
无效显示_编号();
void Display_Guest();
int Get_Capacity();
int Get_Status();
双重获得率();
int变更_状态(int);
双变化率(双);
};
HotelRoom::HotelRoom(char roomNumber[],内部roomCapacity,双倍房费,char*ptr_name,内部职业状态)
{
strcpy(房间号、房间号);
房间容量=房间容量;
每日房价=客房房价;
ptr_guest=新字符[strlen(ptr_名称)+1];
strcpy(ptr_客人、ptr_姓名);
占用情况=占用状态;
}
HotelRoom::~HotelRoom()
{
cout
char HotelRoom::Display_Guest()
{
cout
char HotelRoom::Display_Guest()
{

我能猜到吗,在所有的C风格指针的杂耍下,你要么忘记终止字符串,要么在打印之前删除它。我会使用
std::string
。但是对于我来说,这太多的代码了,以至于我无法在周日通读。你有什么好的理由使用
char roomNumber[]
std::string
?我正在使用char roomNumber[]因为我的书,C++,商业程序员,说使用char和char指针;我的作业也指定使用Cala.另外,在我的班级的DelPauleCudioDePrasyLoad中,如果我说“返回ptruBube”,或者返回ROMMUX号,它会说你不能“返回”的错误。指针。这就是为什么我在调用cout时使用cout打印到屏幕上的原因。如果您从函数中删除了
return
语句,您还需要将返回类型更改为
void
。我猜,在所有的C风格指针操作中,您要么忘记终止字符串,要么在打印之前删除它。我会使用de>std::string
取而代之。但这对我来说太多了,我在周日读不懂。你有什么好的理由在
std::string
上使用
char roomNumber[]
吗?我正在使用char roomNumber[]因为我的书,C++,商业程序员,说使用char和char指针;我的作业也指定使用Cala.另外,在我的班级的DelPauleCudioDePrasyLoad中,如果我说“返回ptruBube”,或者返回ROMMUX号,它会说你不能“返回”的错误。一个指针。这就是我在调用它时使用cout打印到屏幕的原因。如果您从函数中删除了
return
语句,您还需要将返回类型更改为
void
#include <iostream>
    #include <iomanip>
    #include <string>
    #include <cstring>

    using namespace std;

    //create HotelRoom class

    class HotelRoom
    {
    private:
        char* ptr_guest;
        char room_number[3];
        int room_capacity;
        int occupancy_status;
        double daily_rate;

    public:
        HotelRoom(char roomNumber[], int roomCapacity, double roomRate, char* ptr_name, int occupancyStatus);
        ~HotelRoom();
        void Display_Number();
        void Display_Guest();
        int Get_Capacity();
        int Get_Status();
        double Get_Rate();

        int Change_Status(int);
        double Change_Rate(double);
    };
    HotelRoom::HotelRoom(char roomNumber[], int roomCapacity, double roomRate, char* ptr_name, int occupancyStatus)
    {
        strcpy(room_number, roomNumber);
        room_capacity = roomCapacity;
        daily_rate = roomRate;
        ptr_guest = new char[strlen(ptr_name) + 1];
        strcpy(ptr_guest, ptr_name);
        occupancy_status = occupancyStatus;
    }
    HotelRoom::~HotelRoom()
    {

        cout << endl;
        cout << "Destructor Executed";
        cout << endl;
        delete [] ptr_guest;
    }
    void HotelRoom::Display_Guest()
    {
        char* temp = ptr_guest;
        while(*temp != '\0')
            cout << *temp++;
    }
    void HotelRoom::Display_Number()
    {
        cout << room_number;
    }
    int HotelRoom::Get_Capacity()
    {
        return room_capacity;
    }
    int HotelRoom::Get_Status()
    {
        return occupancy_status;
    }
    double HotelRoom::Get_Rate()
    {
        return daily_rate;
    }
    int HotelRoom::Change_Status(int roomStatus)
    {
        if(roomStatus <= room_capacity )
        {
            occupancy_status = roomStatus;
            return occupancy_status;
        }
        else
            occupancy_status = -1;


    }
    double HotelRoom::Change_Rate(double newRate)
    {
        daily_rate = newRate;
        return daily_rate;
    }

    int main()
    {
        cout << setprecision(2)
             << setiosflags(ios::fixed)
             << setiosflags(ios::showpoint);

        //Declare variables to hold data

             char roomNumber[3] = {'1','3','\0'};

             char guestName[20];

             double roomRate = 89.00;

             int roomCapacity = 4;
             int occupancyStatus = 0;
             int status;
             int checkOut;
             int newCustomer;

        //Ask for user input
             cout << "What is the guest's name: ";
             cin.getline(guestName, 20);

             cout << endl;
             cout << "How many guests will be staying in the room: ";
             cin >> status;

             HotelRoom HotelRoom1(roomNumber, roomCapacity, roomRate, guestName, status);

        //Display Rooom information

             cout << endl;
             cout << endl;
             if(HotelRoom1.Change_Status(status))
             {
                 cout << endl;
                cout << "Guest's Name: ";
                HotelRoom1.Display_Guest();
                cout << endl;
                cout << endl;
                cout << "The capacity of this room is " << HotelRoom1.Get_Capacity() << endl;
                cout << endl;
                cout << "There are " << HotelRoom1.Get_Status() << " guests staying in the room";
             }

             cout << endl;
             cout << endl;
             cout << "Your room number is " << HotelRoom1.Display_Number();
             cout << endl;
             cout << endl;
             cout << "The rate for this room is " << HotelRoom1.Get_Rate();
             cout << endl;
             cout << endl;

        //chech this guest out?

             cout << "Check this guest out? ('1 = yes' '0' = no) ";
             cin >> checkOut;

             switch(checkOut)
             {
                 case 1:
                     HotelRoom1.Change_Status(0);
                     for(int i = 0; i < 3; ++i )
                     {
                        cout << endl;
                     }
                     cout << "You have checked out of room number " << HotelRoom1.Display_Number();
                     cout << endl;
                     cout << endl;
                     cout << "The capacity of this room is " << HotelRoom1.Get_Capacity();
                     cout << endl;
                     cout << endl;
                     cout << "There are currently " << HotelRoom1.Get_Status() << " occupants";
                     cout << endl;
                     cout << endl;
                     cout << "The rate of this room was " << HotelRoom1.Get_Rate();
                     break;
             }

        //check in new guest?

             cout << endl;
             cout << endl;
             cout << "Check in new guest? ('1 = yes' '0' = no) ";
             cin >> newCustomer;
             for(int i = 0; i < 3; ++i )
                {
                    cout << endl;
                }
             switch (newCustomer)
             {
             case 1:
                HotelRoom HotelRoom2(roomNumber, roomCapacity, roomRate, guestName, status);
                HotelRoom1.Change_Rate(175.00); //Change rate of room

                cout << endl;
                cout << "What is the guest's name: ";
                cin.getline(guestName, 20);
                cout << endl;
                cout << "How many guests will be staying in the room: ";
                cin >> status;
                cout << endl;
                cout << endl;

        //Display new guest information

                if(HotelRoom1.Change_Status(status))
                {
                cout << endl;
                cout << endl;
                cout << "The capacity of this room is " << HotelRoom1.Get_Capacity() << endl;
                cout << endl;
                cout << "There are " << HotelRoom1.Get_Status() << " guests staying in the room";
                }

                cout << endl;
                cout << endl;
                cout << "Your room number is " << HotelRoom1.Display_Number();
                cout << endl;
                cout << endl;
                cout << "The rate for this room is " << HotelRoom1.Get_Rate();
                cout << endl;
                cout << endl;

                 break;
             }
             cout << endl;


        system("PAUSE");
        return 0;
    }   
char HotelRoom::Display_Guest()
{
    cout << ptr_guest;
}

string HotelRoom::Display_Number()
{
    cout << room_number;
}

int HotelRoom::Change_Status(int roomStatus)
{
    if(roomStatus <= room_capacity )
    {
        occupancy_status = roomStatus;
        return occupancy_status;
    }
    else
        occupancy_status = -1;
}