如何将c ++对象作为参数传递给函数?

时间:2015-12-28 04:10:08

标签: c++ class

我在一个名为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,但它没有多大帮助。

2 个答案:

答案 0 :(得分:1)

问题是由

的存在引起的
#include "FrameHolder.h"
两个.h文件中的

。因此,在custFrame的定义之前没有看到FrameHolder的定义。

答案 1 :(得分:0)

通过指针/引用传递可能就是你应该在这里做的事情。至于语法错误,可能是在将标头包含在标头中时,未正确声明custFrame类。