现在的位置: 首页 > 综合 > 正文

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

2013年11月23日 ⁄ 综合 ⁄ 共 614字 ⁄ 字号 评论关闭

最近在忙着整理以前做的项目工程,以前做开发都是用的伪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);  ///对图像的数据信息复制

}

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

抱歉!评论已关闭.