town类和person类,person类可以在town类中访问各个房屋,town类知道有person这个信息
时间: 2023-12-19 14:06:33 浏览: 66
可以使用组合关系(Composition)实现。具体来说,town类可以包含一个person类的成员变量,从而知道有person这个信息。而person类可以拥有一个指向town类对象的指针,从而可以访问各个房屋。具体实现如下:
```C++
class Person; // 预定义Person类,以便在Town类中使用
class Town {
public:
void addHouse(House* house) { houses.push_back(house); }
void setPerson(Person* person) { this->person = person; }
private:
std::vector<House*> houses;
Person* person;
};
class Person {
public:
void visitHouses() {
for (auto house : town->houses) {
// 访问房屋的代码
}
}
private:
Town* town;
};
```
在上面的代码中,Town类中的houses成员变量用于存储房屋信息,person成员变量用于存储Person类的实例。Person类中的visitHouses函数用于访问Town类中的各个房屋,需要通过指向Town类对象的指针来实现。在使用时,可以先创建Town类和Person类的实例,然后将它们联系起来:
```C++
Town town;
Person person;
town.addHouse(new House("house1"));
town.addHouse(new House("house2"));
town.setPerson(&person);
person.setTown(&town);
person.visitHouses();
```
在上面的代码中,先创建了一个Town类的实例和两个House类的实例,然后创建了一个Person类的实例。接着将House对象添加到Town对象中,并将Person对象关联到Town对象中。最后调用Person对象的visitHouses函数,即可访问Town对象中的各个房屋。
阅读全文