我在一个名为Pixel,custFrame和FrameHolder的项目中有三个课程。
我的custFrame类标题是这样的:
#pragma once
#include "stdafx.h"
#include <gl/gl.h>
#include "PreviewWindow.h"
#include <iostream>
#include <sstream>
#include <vector>
#include "FrameHolder.h"
#include "Pixel.h"
#ifndef CUSTFRAME_H
#define CUSTFRAME_H
class custFrame
{
public:
custFrame();
void addPixel(Pixel pix);
void setWidth(int width);
void setHeight(int height);
int getWidth();
int getHeight();
int getPixelSize();
Pixel getPixel(int count);
private:
std::vector<Pixel> pixels;
int Height;
int Width;
};
#endif
我的FrameHolder类标题是这样的:
#pragma once
//Hold all captured frames containing data
#include "stdafx.h"
#include <gl/gl.h>
#include "PreviewWindow.h"
#include <iostream>
#include <sstream>
#include <vector>
#include "FrameHolder.h"
#include "custFrame.h"
#include "Pixel.h"
#ifndef FRAMEHOLDER_H
#define FRAMEHOLDER_H
class FrameHolder {
public:
FrameHolder();
static FrameHolder* instance();
void addFrame(IDeckLinkVideoFrame* fram);
void calibrate(custFrame fram);
int numFrames();
void setWidth(int width);
void setHeight(int height);
static FrameHolder *inst;
bool calibrating;
int getHeight();
int getWidth();
bool isCalibrating();
private:
//Member variables
int Width;
int Height;
std::vector<IDeckLinkVideoFrame *>frames;
};
#endif
在我的FrameHolder类中,将custFrame对象传递给在该对象中存储该帧的函数似乎不起作用。我收到编译错误(&#34;语法错误:标识符&#39; custFrame&#39;第24行&#34;)。但是在我的custFrame类中,传递一个Pixel对象作为一个框架的一部分存储起来非常有效。我错过了什么吗?我已经看过这个post,但它没有多大帮助。
答案 0 :(得分:1)
问题是由
的存在引起的#include "FrameHolder.h"
两个.h文件中的。因此,在custFrame
的定义之前没有看到FrameHolder
的定义。
答案 1 :(得分:0)
通过指针/引用传递可能就是你应该在这里做的事情。至于语法错误,可能是在将标头包含在标头中时,未正确声明custFrame类。