错误C2143:缺少语法错误:缺少';'在'*'之前

时间:2015-05-30 01:57:18

标签: c++ opengl

遇到以下问题:

我创建了一个Camera类。

class Camera
{
private:
public:
   vec3 Position;
   vec3 Forward;
   vec3 Up;

   float speed;
   float angleSpeed;

   // Constructor with vectors
   void newCamera(void);
   Camera();    
   ~Camera(void);
};

这是Camera类的.cpp代码。

void Camera::newCamera(void)
{
    Position = vec3(0.0f, 2.0f, 0.0f);
    Forward = vec3(0.0f, 0.0f, -1.0f);
    Up = vec3(0.0f, 1.0f, 0.0f);
    speed = 0.2f;
    angleSpeed = 0.3f;
}

Camera::Camera()
{
}

Camera::~Camera(void)
{
}

我正在另一堂课中实例化。

class Surface
{
private:
public:
   Camera * cam;
   Surface();   
   ~Surface(void);
};

这是Surface类的.cpp代码。

Surface::Surface()
{
     cam->newCamera();
};

Surface::~Surface(void)
{
};

我目前收到的错误是 - “错误C2143:语法错误:缺少';'在'*'之前

1 个答案:

答案 0 :(得分:3)

你的表面类不知道Camera是什么。您需要转发声明它(因为它是类型指针或引用;减少编译时间)并在源文件中包含标头;另外,你不能从空实例中调用方法:

Surface类定义:

#ifndef SURFACE_H
#define SURFACE_H

class Camera;

class Surface
{
    private:
    public:
       Camera * cam;
       Surface();   
       ~Surface(void);
};

#endif    

Surface类实现:

#include "Surface.h"

#include "Camera.h"

Surface::Surface() : cam(new Camera)
{
     cam->newCamera();
};

Surface::~Surface(void)
{
    delete cam;
    cam = nullptr; //Not really needed in this case, but a good habit none-the-less
};