我尝试通过引用返回多个值。

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/

10-11 22:38
查看更多