我尝试通过引用返回多个值。
enum Color {ORANGE, YELLOW, GREEN, BLUE, VIOLET, RED};
int main(int argc, const char * argv[])
{
CvScalar hsv_min, hsv_max;
choose_color(RED, hsv_min, hsv_max);
return 0;
}
void choose_color(Color farbe, CvScalar &min, CvScalar &max) {
switch (farbe) {
case ORANGE:
min = cvScalar(0,50,50);
max = cvScalar(0,255,255);
break;
default:
throw "choose color: invalid case!";
break;
}
};
为什么对choice_color调用会得到“使用未声明的标识符”?
最佳答案
因为您的main
函数需要知道您的choose_color
存在。
您需要做一个前向声明(将函数的prototype放在main
函数之前):
enum Color {ORANGE, YELLOW, GREEN, BLUE, VIOLET, RED};
// Forward declaration
void choose_color(Color farbe, CvScalar &min, CvScalar &max); // function prototype
int main(int argc, const char * argv[])
{
CvScalar hsv_min, hsv_max;
choose_color(RED, hsv_min, hsv_max);
return 0;
}
void choose_color(Color farbe, CvScalar &min, CvScalar &max) {
// ...
};
Here是有关正向声明的很好的解释。
另一种解决方案是在
main
函数之后定义choose_color
。关于c++ - 通过引用致电:使用未声明的标识符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18726267/