我想通过指针保存并获取B类中的数据。 A类是信息对象,B类是关于A的EXTRA信息。我不想使用索引作为参数,所以我可以使用B类的对象地址获取有关此地址中对象A的额外信息吗?
代码说明:
class A;
class B;// B is countainer that stores ages.
A* a;
B b;
int main() {
a = new A();
b.setAge(a, 26);//give adress and age
cout << b.getAge(a) << endl;//get age saved in B by object A adress
b.delete(a);
delete a;
return 0;
}
如何进行setAge和getAge实现,需要向B类添加哪些变量?也许B类应该像桌子那样第一列是地址,第二列是年龄。我可以像array [index]一样直接制作吗?
答案 0 :(得分:1)
您似乎可以使用std::map
class Person {};
class AgeMap
{
public:
void setAge(const Person& person, unsigned age) { ages[&person] = age; }
unsigned getAge(const Person& person) const { return ages.at(&person); }
private:
std::map<const Person*, unsigned> ages;
};
用法:
int main() {
Person alice;
Person bob;
Person charlie;
AgeMap ages;
ages.setAge(alice, 36);
ages.setAge(bob, 42);
std::cout << ages.getAge(alice) << std::endl; // 36
std::cout << ages.getAge(bob) << std::endl; // 42
try {
std::cout << ages.getAge(charlie) << std::endl;
} catch (const std::exception&) {
std::cerr << "no age provided for Charlie\n";
}
}