Я не знаю, почему в правиле C++ сказано, что я не могу вернуть локальную переменную?Почему я не могу вернуть локальную переменную?
Эта простая функция «max» полностью не имеет проблем;
int max(int a,int b)
{
int maxnum;
if(a>b)maxnum= a;
else maxnum= b;
return maxnum;
}
int main(int argc, char** argv)
{
cout<<max(10,30);
system("PAUSE");
return 0;
}
, но, когда я хочу, чтобы вернуть локальную переменную, как и прежде, в OpenCV, оказывается, неверные данные
почему я не могу вернуть локальной переменной здесь?
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
#include <sstream>
using namespace cv;
using namespace std;
Mat GetIntensity(Mat *pic,int y,int x)
{
float Array[6];
for(int i=0;i<6;i++)
{
Array[i]=pic[i].at<uchar>(y,x);
}
Mat Intensity(6,1,CV_32FC1,&Array);
cout<<Intensity;
return Intensity;
}
int main(int argc, char** argv)
{
stringstream ss;
string pic_name;
Mat pic[6];
for(int i=0;i<6;i++)
{
ss.clear();
ss.str(std::string());
ss<<"pic"<<i<<".bmp"<<endl;
ss>>pic_name;
pic[i] = imread(pic_name, CV_LOAD_IMAGE_GRAYSCALE);
if(! pic[i].data)
{// Check for invalid input
cout << "Could not open or find the image" << endl ;
system("pause");
return -1;
}
//namedWindow(pic_name, CV_WINDOW_AUTOSIZE);
// Create a window for display.
//imshow(pic_name, pic[i]);
}
cout<<=GetIntensity(pic,60,60);
system("PAUSE");
//waitKey(0);
return 0;
}
Пробовали ли вы «вернуть локальную переменную C++» на Google? – Telokis
Я сделал, но я не знаю, почему эта простая функция «max» полностью не имеет проблем. – user3094631
мы можем получить данные, возвращаемые функцией, либо по значению, либо по ссылке, но, на мой взгляд, «return by value» означает «return local value», и мне интересно, почему он работает без porobleml? – user3094631