我无法弄清楚为什么我会收到这个错误。任何人都可以伸出援助之手。 我需要在头文件中声明VideoCapture捕获并在Video.cpp中调用它
Video.h
class Video
{
public:
static VideoCapture capture;
//Default constructor
Video();
//Declare a virtual destructor:
virtual ~Video();
//Method
void Start();
private:
};
Video.cpp
#include "StdAfx.h"
#include "Video.h"
#include "UserInfo.h"
#include "Common.h"
void Video::Start()
{
while(1)
{
Mat img;
bool bSuccess = capture.read(img); // read a new frame from video
if (!bSuccess) //if not success, break loop
{
cout << "End of video" << endl;
break;
}
imshow("original video", img); //show the frame in "Original Video" window
if(waitKey(30) == 27) //wait for 'esc' key press for 30 ms. If 'esc' key is pressed, break loop
{
cout << "esc key is pressed by user" << endl;
break;
}
}
}
非常感谢任何帮助
答案 0 :(得分:10)
在类定义中,static
变量仅仅是声明。您只声明capture
将存在某处。
您需要添加定义。使变量存在。
在任何版本的C ++中
您可以在cpp文件中单独定义变量。
const VideoCapture Video::capture;
在C ++ 17或更高版本中
您可以在标题中声明变量inline
,以使其成为定义。
static inline VideoCapture capture;