关于通过指针访问数组的值,我遇到了一个问题。在本机C++语言中,我可以通过以下代码访问元素
int a[]={1,2,3};
cout<<*(a+1);
所以,我可以得到"2"。
但是,当我使用C++CLR和openCV 2.4.7时,出现了一个错误。代码如下。
cv::Mat a;
cout<<*(a+1);
搜索了一些网站后,我不知道该怎么处理。希望有人能帮助我。谢谢!
当您声明int a[]
时,您应该问问自己什么是a?
答案是:a是整数数组。它也是数组中第一个整数的地址。
所以当你呼叫*(a+1);
时
它被解释为:
-
取
a
的地址,并将int的大小加到它上面(a+1)。 -
转到结果地址并获取其内容。
当您申报cv::Mat a;
时它不是一个数组。a是一个对象,而不是地址。
现在CCD_ 5只有在CCD_ 6具有CCD_。否则将导致错误。即使它有operator +
,我猜返回值将是cv::Mat
而不是整数。
CCD_ 10没有任何意义,因为结果不是地址。
最后,要用cout
打印它,还必须实现参数为cv::Mat
的流运算符operator<<
。