定义一个房间类(CRoom),要求拥有的私有数据成员:门牌号(m_id),门 (m_pdoor),窗户(m_window)。其中,门是门类(CDoor)定义的对象指针成员, 窗户是窗户类(CWindow)定义的对象成员。
时间: 2023-12-30 19:05:15 浏览: 179
以下是定义一个房间类(CRoom)的代码:
```cpp
class CDoor {
// 门类的定义
};
class CWindow {
// 窗户类的定义
};
class CRoom {
private:
int m_id; // 门牌号
CDoor* m_pdoor; // 门对象指针
CWindow m_window; // 窗户对象
public:
// 构造函数
CRoom(int id, CDoor* pdoor, CWindow window) : m_id(id), m_pdoor(pdoor), m_window(window) {}
// 获取门牌号
int getId() const { return m_id; }
// 获取门对象指针
CDoor* getDoor() const { return m_pdoor; }
// 获取窗户对象
CWindow getWindow() const { return m_window; }
};
```
在这个代码中,我们定义了一个门类(CDoor)和一个窗户类(CWindow),并在房间类(CRoom)中使用了它们。CRoom 类有三个私有数据成员:门牌号(m_id)、门对象指针(m_pdoor)和窗户对象(m_window)。
在构造函数中,我们初始化了这三个数据成员。在获取函数中,我们提供了对这些私有数据成员的访问方法。
相关问题
定义一个房间类(CRoom),要求拥有的私有数据成员:门牌号(m_id),门(m_pdoor),窗户(m_window) //其中,门是门类(CDoor)定义的对象指针成员,窗户是窗户类(CWindow)定义的对象成员
以下是一个可能的 CRoom 类定义:
```cpp
class CDoor {
// 门类的定义
};
class CWindow {
// 窗户类的定义
};
class CRoom {
public:
CRoom(int id) : m_id(id), m_pdoor(nullptr) {}
~CRoom() { delete m_pdoor; } // 在析构函数中释放门对象的内存
void set_door(CDoor* door) { m_pdoor = door; }
void set_window(const CWindow& window) { m_window = window; }
private:
int m_id; // 门牌号
CDoor* m_pdoor; // 指向门对象的指针
CWindow m_window; // 窗户对象
};
```
在这个定义中,`CRoom` 类包含了一个指针成员 `m_pdoor`,用来指向一个 `CDoor` 对象。在构造函数中,我们将其初始化为 `nullptr`。同时,`CRoom` 类还包含了一个 `CWindow` 对象成员 `m_window`。
我们可以通过 `set_door` 和 `set_window` 函数来设置门和窗户,例如:
```cpp
CRoom room(101);
CDoor* pdoor = new CDoor; // 创建门对象
room.set_door(pdoor); // 将门对象指针设置为该房间的门
CWindow window;
room.set_window(window); // 将窗户对象设置为该房间的窗户
```
注意,在 `CRoom` 类的析构函数中,我们需要释放 `m_pdoor` 指向的内存,以防止内存泄漏。
定义一个房间类( CRoom ),要求拥有的私有数据成员:门牌号( m _ id ),门( m _ pdoor ),窗户( m _ window )。其中,门是门类( CDoor )定义的对象指针成员,窗户是窗户类( CWindow )定义的对象成员。要求:每个类单独定义在两个文件中(. h 和. cpp ),房间类包括:构造函数、析构函数, InstallDoor 成员函数能够实现安装门( new CDoor )的功能。要求窗户类的构造函数必须带参数, CDoor 类具有宽度,高度及修改宽度高度功能◇ CWindow 类具有宽度,高度及修改宽度高度功能。设计好后测试。C++
CRoom.h:
```cpp
#ifndef CROOM_H
#define CROOM_H
#include "CDoor.h"
#include "CWindow.h"
class CRoom {
public:
CRoom(int id);
~CRoom();
void InstallDoor(double width, double height);
private:
int m_id;
CDoor* m_pdoor;
CWindow m_window;
};
#endif
```
CRoom.cpp:
```cpp
#include "CRoom.h"
CRoom::CRoom(int id) {
m_id = id;
m_pdoor = nullptr;
}
CRoom::~CRoom() {
if (m_pdoor != nullptr) {
delete m_pdoor;
}
}
void CRoom::InstallDoor(double width, double height) {
if (m_pdoor != nullptr) {
delete m_pdoor;
}
m_pdoor = new CDoor(width, height);
}
```
CDoor.h:
```cpp
#ifndef CDOOR_H
#define CDOOR_H
class CDoor {
public:
CDoor(double width, double height);
~CDoor();
void SetWidth(double width);
void SetHeight(double height);
private:
double m_width;
double m_height;
};
#endif
```
CDoor.cpp:
```cpp
#include "CDoor.h"
CDoor::CDoor(double width, double height) {
m_width = width;
m_height = height;
}
CDoor::~CDoor() {}
void CDoor::SetWidth(double width) {
m_width = width;
}
void CDoor::SetHeight(double height) {
m_height = height;
}
```
CWindow.h:
```cpp
#ifndef CWINDOW_H
#define CWINDOW_H
class CWindow {
public:
CWindow(double width, double height);
~CWindow();
void SetWidth(double width);
void SetHeight(double height);
private:
double m_width;
double m_height;
};
#endif
```
CWindow.cpp:
```cpp
#include "CWindow.h"
CWindow::CWindow(double width, double height) {
m_width = width;
m_height = height;
}
CWindow::~CWindow() {}
void CWindow::SetWidth(double width) {
m_width = width;
}
void CWindow::SetHeight(double height) {
m_height = height;
}
```
测试代码:
```cpp
#include <iostream>
#include "CRoom.h"
using namespace std;
int main() {
CRoom room1(101);
room1.InstallDoor(1.2, 2.1);
cout << "Door width: " << room1.m_pdoor->GetWidth() << ", height: " << room1.m_pdoor->GetHeight() << endl;
room1.m_pdoor->SetWidth(1.5);
room1.m_pdoor->SetHeight(2.3);
cout << "Door width: " << room1.m_pdoor->GetWidth() << ", height: " << room1.m_pdoor->GetHeight() << endl;
return 0;
}
```
阅读全文
相关推荐






