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

Peculiar compile error: ‘cap’ does not name a type

本文关键字:类型 cap 编译 错误      更新时间:2023-10-16

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

作品 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);

海湾合作委员会版本:6.1.1 20160501 公开简历版本:3.1.0-3

可能出了什么问题?

你不能

cap.open(0)放在main之外,因为这就是C++的工作方式。但是cap.open(0)里面main会很好用。

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