全局变量的多个实例

时间:2018-11-28 23:16:29

标签: c++

我有一个全局变量和一个函数,每次调用它时,它都会创建一个Myclass类型的对象,并在HashTable中插入一个指向该对象的指针。

因此,我希望每次调用“插入”时,它都会创建Myclass的新对象,为它创建一个指针,并将该指针存储到哈希表中。

类似的东西:

Myclass object;

void insert()
{
    object.doSomething();
    Myclass * ptr = &object;
    HashTable.insert(ptr);
}

但是它不起作用,因为每次调用“插入”都会覆盖先前的对象。

2 个答案:

答案 0 :(得分:0)

您永远不会创建新的Myclass对象。每次调用insert()时,您只会获得指向相同对象的相同指针。

答案 1 :(得分:0)

怎么样?

Myclass *object;

void insert()
{
    object = new Myclass();
    object->doSomething();
    //Myclass * ptr = object;
    HashTable.insert(object);
}

修改

PS:请确保您遍历哈希表并删除所有指针,否则将有很多悬空的指针

说明

您需要确保每次调用object时,代码都不会修改哈希表中的旧insert。因此,我们将object用作指针,并在每次调用方法insert时实例化。