c++ - 如何让指针超出作用域

标签 c++ pointers reference variables scope

这不完全是我的代码,但看起来很像

我有 2 个 CTable 类型的表。它们的工作方式与普通数组相同,但可以动态分配和调整大小。所以让我们假设它们现在是数组

一个表有对象引用

MyObj obj1;
MyObj obj2;

MyObj table1[10];
table1[0] = obj1;
table1[1] = obj2;

现在因为有时我想对它们进行不同的排序,所以我将指向这些对象的指针放在另一个表中

MyObj *table2[10];
table2[0] = &table1[0];
table2[1] = &table1[1];

有没有办法通过 table2 获取对 obj1 和 obj2 的引用,以便这些对象在某种删除函数结束时超出范围

有点像

void free() {
MyObj &obj = *table2[0];
}

然后 bang,在 free 结束时,obj 被自动删除。此外,通过 table2 删除这些对象的某种方式也是可以接受的。

最佳答案

如果你想控制对象的生命周期,你需要动态分配它们。在这种情况下,您的代码将如下所示:

vect2.push_back(new MyObj);
vect2.push_back(new MyObj);

void func() { 
    MyObj &obj = *vect2[0];
    // ...
    vect2.erase(vect2.begin());
    delete &obj;
}

关于c++ - 如何让指针超出作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2278788/

相关文章:

php - 如何使用 $this 访问静态类成员?

C++ 指针和类

pointers - Cgo指针字符串 slice (*[]string)的指针传递规则?

c++ - 在不知道非模板化参数的参数类型的情况下重载模板化 lambda

c++ - 使用通用函数指针 C++ 传递方法所需类型的参数

c - 该程序缺少/需要修复什么?

c++ - 在 C++ 中延长临时值的生命周期

javascript - 检索对象中嵌套的值

c++ - 错误 : 'string' in namespace 'std' does not name a type

c++ - argv 的段错误