奇怪的编译错误:'cap'没有命名类型

时间:2016-06-06 15:35:15

标签: c++ opencv gcc

我收到的编译时错误似乎违背了我的所有逻辑。以下三个代码片段有效,而第三个代码片段无效。为什么呢?

作品1

#include "opencv2/opencv.hpp"

cv::VideoCapture cap(0); 

int main()
{
        return 0;
}

作品2

#include "opencv2/opencv.hpp"

int main()
{
    cv::VideoCapture cap(0);
    return 0;
}

作品3

#include "opencv2/opencv.hpp"

int main()
{
    cv::VideoCapture cap; 
    cap.open(0);
    return 0;
}

不起作用:

#include "opencv2/opencv.hpp"

cv::VideoCapture cap; 
cap.open(0);

int main()
{
    return 0;
}

我得到的错误是:

  

错误:'cap'没有命名类型cap.open(0);

GCC版本:6.1.1 20160501 OpenCV版本:3.1.0-3

可能出现什么问题?

1 个答案:

答案 0 :(得分:1)

您不能将cap.open(0)放在main之外,因为这是C ++的工作方式。但cap.open(0)内的main可以正常使用。

作为一般规则,您不能在函数外部编写此类代码,编译器根本无法理解在运行时执行它的位置。