类的成员是一个类,怎么获取这个成员的变量
在C++中,当一个类的成员是另一个类的对象时,我们可以通过该成员对象的公有接口(即其成员函数)来访问其变量。这通常涉及到创建包含类(也称为外部类或容器类)的对象,然后通过该对象来访问其成员对象(也称为内部类或嵌套对象)的公有成员函数。
下面是一个简单的例子,展示了如何访问一个类的成员对象的变量:
cppCopy Code
#include <iostream> #include <string> // 内部类(或成员类) class Address { private: std::string street; std::string city; public: // 构造函数 Address(const std::string& str, const std::string& c) : street(str), city(c) {} // 获取街道名称 std::string getStreet() const { return street; } // 获取城市名称 std::string getCity() const { return city; } }; // 外部类(或容器类) class Person { private: std::string name; Address address; // 成员对象是Address类的实例 public: // 构造函数 Person(const std::string& n, const Address& addr) : name(n), address(addr) {} // 获取人的名称 std::string getName() const { return name; } // 获取街道名称(通过成员对象) std::string getStreet() const { return address.getStreet(); } // 获取城市名称(通过成员对象) std::string getCity() const { return address.getCity(); } }; int main() { // 创建Address类的对象 Address addr("123 Main St", "Anytown"); // 创建Person类的对象,并将Address对象作为成员 Person person("John Doe", addr); // 访问Person类的成员变量 std::cout << "Name: " << person.getName() << std::endl; std::cout << "Street: " << person.getStreet() << std::endl; std::cout << "City: " << person.getCity() << std::endl; return 0; }
在这个例子中:
Address
类是一个内部类,它有两个私有成员变量(street
和city
)以及相应的公有成员函数来访问这些变量。Person
类是一个外部类,它有一个私有成员变量(name
)和一个Address
类的成员对象(address
)。Person
类提供了公有成员函数来访问其自己的成员变量以及Address
成员对象的变量。- 在
main()
函数中,我们创建了一个Address
类的对象和一个Person
类的对象,并通过Person
类的对象来访问Address
成员对象的变量。
通过这种方式,我们可以保持封装性,同时允许外部类访问其成员对象的公有接口。这是面向对象编程中常用的技术,有助于维护代码的清晰性和可维护性。