[英]Pass created object as argument, from inside that object, C++
我正面臨以下問題。 我有以下課程, Room
和Reservation
。 對於Reservation
類,有一個函數( void Reservation :: rsrvRoomAssignment(Room* r)
),用於將Reservation
類的Room* rsrvRoom
成員分配給Room
對象。 我想從Room對象內部調用此類,但是我不知道如何實現將運行代碼的創建對象作為參數正確傳遞。
該代碼描述了上述內容:
保留時間
class Room;
class Reservation {
public:
static int rsrvCode;
string rsrvName;
unsigned int rsrvDate;
unsigned int rsrvNights;
unsigned int rsrvPersons;
Room* rsrvRoom; // Room assigned to reservation.
Reservation();
~Reservation();
void rsrvRoomAssignment(Room*);
};
Reservation.cpp
#include <iostream>
#include "Reservation.h"
using namespace std;
/*
Constructor & Destructor
*/
void Reservation :: rsrvRoomAssignment(Room* r){
rsrvRoom=r;
}
室h
#include "Reservation.h"
class Room {
public:
static unsigned int roomNumber;
unsigned int roomCapacity;
Reservation* roomAvailability[30];
double roomPrice;
Room();
~Room();
bool roomReservationAdd(Reservation*);
};
Room.cpp
#include <iostream>
#include <string>
#include "Room.h"
using namespace std;
/*
Constructor & destructor
*/
bool Room::roomReservationAdd(Reservation* r){
/* some statement that returns flase */
r->rsrvRoomAssignment(/* & of created object */); // This is the problem i described.
return 1;
}
我對OOP還是很陌生,因此上述代碼片段可能還會出現一些邏輯錯誤,因此不要太苛刻:)。
感謝您的任何幫助!
在類方法中時, this
指示調用它的對象的實例。 在您的情況下,當房間實例X
調用X.roomReservationAdd(r)
,它指向房間實例X
因此,您可以簡單地調用r->rsrvRoomAssignment(this);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.