设置,通过指针(而不是索引)从类中获取数据

时间:2015-08-02 09:36:15

标签: c++ pointers

我想通过指针保存并获取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]一样直接制作吗?

1 个答案:

答案 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";
    }
}

Live Demo