旧事重提——函数的指针传值

最近在忙着整理以前做的项目工程,以前做开发都是用的伪C++(我的叫法,因为不是真正的C++)里面的实现都无可拓展性可言,所以最近忙着整理成C++类的表述方式,方便以后继续在这个项目基础上添加东西。

 问题是接二连三,好多看似简单的东东,稍微变一下就只有撞墙了。例如遇到的一个问题——传值

  我做的项目是跟图像有关的,所以经常需要将图像指针传来传去,额……没办法,如果在一个类里面去实现估计就没这个必要了,直接将这个指针作为一个成员变量。这样做确实也能实现,没办法,开始构造它的时候没那样想,所以现在只能传来传去了。

  例如我想从A类里面取出图像指针 pa, 然后将这个传值给B类,所以我得在B类里面写段代码:

  void setimg( T *p)

{

  this->_p = p;

}

这样写看似没有问题的,我也测试过多次,然后最终也能够实现预期的目标。不过这样如果我在B类里面做了任何一个 free(p)操作,后果可想而知,会带来大麻烦。这样这个p在B里面就彻底没了。我在B类里面做的只是想对传入的图像进行操作,取出图像中的数据等等……只是处理简单的处理一下图像。最终我的解决方法是复制图像的内容大致如下:

void setimg( T*p)

{

  copycontent(p, this->_p);  ///对图像的数据信息复制

}

哦,最重要的一点是要记住,如果进行指针传值一定要记住它来自哪里,它将在什么地方消失!如果不知道它将在哪里消失,千万不要再中途让它被消失了。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值