写保存和读取坐标点的函数遇到的问…
来源:互联网 发布:电视网络机顶盒什么牌子的好 编辑:程序博客网 时间:2024/06/05 22:58
写了两个函数,一个函数的功能是保存图像的深度和色彩save(Device device)
;另一个函数的功能是保存图像的骨架信息saveSkeleton(Device device)
在我传入设备的时候,出现了错误,是什么私有成员不能访问的错误。后来改成
传地址,错误消失。
出现问题:
问题1:为什么传入地址就没有错误。
问题2:我传入参数的时候错误,为什么他报的是私有成员不能访问的错误。我
在哪访问私有成员了,什么是私有成员。
问题3:即便这个构造函数是私有的。但是我创建这个类的对象应该和这个没有
什么关系吧。怎么会报错呢?
问题1原因:我的理解是:如果你传入的不是地址的话,他就不是在主函数中创
建的那个对象,而是新建的一个对象,即原对象的副本,也就是按值传递对象意
味着创建原始对象的一个副本。但是创建副本为什么会报错呢?顶多就是浪费一
点内存。因为当原对象改变的时候,副本不会改变,而摄像机(设备)是一直在
一帧一帧的录视频,原对象一定会发生改变,所以会出现不一致。所以报错。
问题2原因:我将Device这个类转到定义查看了一下,发现这个类里面有一个私
有的构造函数是这样定义的Device(const Device&)。经查书得,这样定义叫做
复制构造函数。但是问题又来了,什么是复制构造函数,并且他有什么作用?
经调查:
在C++中,下面三种对象需要拷贝的情况。因此,拷贝构造函数将会被调用。
1). 一个对象以值传递的方式传入函数体
2). 一个对象以值传递的方式从函数返回
3). 一个对象需要通过另外一个对象进行初始化
本人遇到的属于第三种。但是对于第一种也不应该报错啊,我这个对象以值的方
式传入函数体,也合理啊?他只能说我得不到想要的东西,但是为什么会报错呢
?这样又转到了问题1。
问题3原因:
猜想:是不是这个类是不能够复制的。复制就会报错。Device类的对象作为参数
传入函数时必须以指针的形式传入,否则就会报错。
问题4:在打开设备的时候,出现设备不存在的情况,后来加入代码
openni::Status result = openni::STATUS_OK;
result = OpenNI::initialize();
这句代码的作用是什么??
原因:如果函式有正确执行的話,所得到的回传值会是openni::STATUS_OK,但是这并不能解释这个问题。要是说Openni不初始化,Device类就不能使用,但是这完全
可以不要第一句话。刚才试了一下,确实不要第一句话可以。
使用引用传递的效率也会很高,可以节省内存和时间,好像还可以避免截断问题
,具体原因网上有很多。
程序存在的问题:程序一段时间会出现错误,可能是录取的视频的时候,所用的内存会随着帧数的增多而增大,所以到一段程序就是弹出出错框。不知道对不对。有错误,请指正。
下面是老师给总结的(一看就看出水平来了):
出现错误的原因是device类的拷贝构造函数是private的,在函数传参数时,会新建一个device对象,然后调用拷贝构造函数。拷贝构造函数是private的,导致private成员不能访问,所以编译出错。
而传递引用的话相当于传递了一个对象指针(是相当于),实际上并没有新建对象,所以不会出错
这算是一个技巧吧。btw(顺便说一下),一般传递参数的时候c++最好传递引用,而不是传递对象,效率会有提升。就是传值和传地址的区别
- 写保存和读取坐标点的函数遇到的问…
- 写标注点的两种坐标
- 文件的读取和保存
- 文件的保存和读取
- 文件的保存和读取
- Mat的保存和读取
- 设计一个点类,其中包含一对坐标点数据成员,一个计算两点距离的友元函数和坐标点的显示函数
- OpenCv中读取图像某点的坐标
- 请问C++在坐标轴内怎么计算一个长方形和十字形状的面积,用数组保存的坐标点
- unity给定两个点和中间点的其中一个坐标比如z坐标,求该点的坐标
- 自己动手写类似酷狗播放器(5)_文件的保存和读取
- MFC三种不同方式实现图形的保存和重绘---方法一:通过集合类CPtrArray保存点的坐标
- opencv中在屏幕上每隔几秒显示一个点,并且保存点的坐标
- Windows Phone 7开发遇到的事:保存、读取图片
- 点坐标生成其他要素类型的转换函数(arcDesktop)
- 通过Touch的相应函数来获得触摸点坐标
- 根据两个点坐标计算距离的函数
- 保存和读取窗口的设置
- 小波变换
- opencv数据结构Mat的好处【转】
- [ios ui][[UIScreen mainScreen] bounds]和 applicationFrame
- cv::Mat结构
- 编译链接原理 C++
- 写保存和读取坐标点的函数遇到的问…
- Kinect的介绍和应用【转】
- 南阳理工OJ_题目170 网络的可靠性
- 图像处理中关于矩的解释
- 关于openGL的说明及GLUT配置和open…
- openGL将三维坐标转换成二维坐标在…
- NSLog的输出格式
- opencv之利用opencv_traincascade训练分类器
- Kinect nite2 openNI2 配置遇到的问题