有没有一种方法可以通过使用指针来处理作用域
Is there a way to work around scope by using pointers?
取以下代码
void save(){
Classname object(aString, aInt);
this->getVector().push_back(&object);
}
我试图将对象的副本保存到这个类的向量中,但我知道这不起作用,因为一旦我离开save(),对象就会被删除,所以我的问题是如何解决这个问题?我很欣赏一些代码示例,因为我是从java迁移过来的,可能不理解这些指针魔法。
编辑:英语edit2:复制粘贴永远不起作用!
首先,不需要this->
,你可以说
getVector().push_back(...);
其次,由于您使用了this->
,我推断save
和getVector
是同一类的两个成员函数;如果getVector
所做的只是访问一个也是类成员的向量(没有任何像懒惰实例化这样的技巧),那么你也不需要它,你可以直接处理这个向量:
theVector.push_back(...)
现在回答你的问题。你说得对,如果object
在堆栈上,它就会超出作用域。但你可以在堆上动态构建它,它将一直存在,直到被删除:
void save(){
Classname *ptr = new Classname(aString, aInt);
theVector.push_back(ptr);
}
现在ptr
将超出范围,但添加到向量的ptr
的副本不会,并且指针仍将指向对象。
由于您希望使用多态性,我想您希望向量包含基类指针,这些指针实际上可以指向派生类的对象。没有问题:
void save(){
Animal *ptr = new Aardvark(aString, aInt);
theVector.push_back(ptr); // <-- the vector is of type vector<Animal*>
}
相关文章:
- 全局作用域中函数指针的赋值
- 错误:表达式必须具有算术、无作用域枚举或带有运算符重载的指针类型
- 如何从类函数返回指向类作用域数组的指针?
- 块作用域中的函数指针定义
- c++ 指针在离开作用域后不会停留
- 混合指向已分配对象和作用域对象的指针
- 在一个作用域中推送五个对象指针,然后检查对象的布尔值是否为 false,会给出错误
- 空的唯一指针在离开作用域时调用析构函数
- 使用作用域内生成的指针初始化静态成员
- 提升::进程间managed_shared_memory指针有效作用域
- 什么是C++中的作用域指针
- 在释放了所有作用域内指针之后仍然可访问内存
- C++指针到指针作用域的问题
- 模板类中静态函数或指针的作用域解析
- 有没有一种方法可以通过使用指针来处理作用域
- 关于 C++(或 C)中的指针的函数作用域
- 链表函数 cpp 中的指针作用域
- c++裸指针作用域
- c++对象指针作用域
- 为结构的数组创建指针作用域和构造函数