gpt4 book ai didi

c++ - 如何在另一个函数中使用一个函数指向对象的指针?

转载 作者:行者123 更新时间:2023-11-28 03:29:19 29 4
gpt4 key购买 nike

我有一个指向我将在一个方法中使用的对象的指针。但我需要在另一种方法中再次使用相同的指针,如何在不声明为全局对象的情况下实现这一点。这是我动态竞标成就的一部分Shape 是父类,Rectangle 是子类。

int main(){
switch (choice){
case 1:
create();
break;
case 2:
process();
break;
}
}

create(){
Shape *shape[3];
shape[0]=&objRectangle;
}

process(){
for(int i=0;i<3;i++){
shape->print; // I want to acchieve like this.
}

现在我不能这样做,因为形状对象在退出创建过程后就消失了。请协助。

最佳答案

我会像其他人一样建议让库为您管理内存。

为了能够使用动态绑定(bind)和std::vector,你应该开始分配(在你的main中)你的vector as

    std::vector<Shape*> shape(3);

这样做你可以访问你的动态绑定(bind) vector 条目

    shape[0]->process();

坏处是您仍然必须管理 vector 条目指向的内存(实际上它们只是 C 指针)。因此,你为什么不考虑做

    std::vector< std::tr1::shared_ptr< Shape > > shape(3);

?

这样做,smart pointer std::tr1::shared_ptr 将在指向的 Shape 对象超出范围时为您释放内存。

此外,在此设置中,您应该将Shape类型的对象分配为

     shape[0] = std::tr1::shared_ptr< Shape >(new Rectangle);

正确创建您需要的智能指针。

最后, vector shape 应该通过引用(或 const 引用)传递给使用它的函数。

关于c++ - 如何在另一个函数中使用一个函数指向对象的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13037296/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com