我尝试通过引用返回多个值。
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;
}
};
为什么我会为choose_color调用获得“使用未声明的标识符”?
答案 0 :(得分:2)
因为您的main
功能需要知道您的choose_color
存在。
你需要做一个前向声明(在main
函数之前放置函数的prototype):
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
。
答案 1 :(得分:0)
在 choose_color()之后放置main(),或者更好的是,将函数声明为main():
void choose_color(Color farbe, CvScalar &min, CvScalar &max);
int main(int argc, const char * argv[])
{
...
}