刚刚学习C++,遇到了一个问题,我不太清楚为什么会出现以下情况。
不工作
ChildObject in = myObject.getObjFromVector(0);
ChildObject out = myObject.getObjFromVector(1);
doSomething(in.property, out.property); // void doSomething(Thing &in, Thing &out)
where
ChildObject& getObjFromVector(int index)
作品
process(myObject.getObjFromVector(0).property, myObject.getObjFromVector(1).property);
如果您想知道,尽管我认为这无关紧要,Thing 是来自 opencv 的 Mat。然而,这个问题是关于为什么上述方法以一种方式起作用而不是另一种。
有趣的是,将方法传递给整个对象,还是传递该对象的属性,哪个性能更高?表明两者都应该起作用,或者至少是可以接受的。不过,我肯定做错了什么,这可能归因于我不知道的 openCV 中的某些内容。
编辑:我有效地对 .property 值进行了一些图像处理。喜欢
process (Mat &src, Mat &out){
...
pyrDown(src, result, Size(src.cols / 2, src.rows / 2));
...
当它不工作时,我没有看到 pyrDown 生效。