错误C2011:'XX':'类'类型重新定义

Pac*_*cha 6 c++ class

我有这段代码的编译错误(C2011).我不知道它有什么问题.

命名空间(Ogre)没有定义PlaneMovement.我也尝试了一个不同的名字,但仍然是同样的错误.

#include <Ogre.h>

using namespace Ogre;

class PlaneMovement
{
public:
    PlaneMovement(Degree startingAngle, Real velocity = 2, Real gravity = 2);
    Vector2 updateMovement(const FrameEvent& evt);
private:
    Degree currentAngle;
    Real currentVelocityX;
    Real currentVelocityY;
    Real gravity;
    bool top;
};
Run Code Online (Sandbox Code Playgroud)

Luc*_*ore 28

包括警卫:

#ifndef FILE_H
#define FILE_H

//file contents here

#endif
Run Code Online (Sandbox Code Playgroud)

头文件应该包含这个确切原因的保护 - 多个包含在同一个翻译单元中可以导致多重定义.

替代方案是使用

#pragma once
Run Code Online (Sandbox Code Playgroud)

但并非所有编译器都支持此功能.

  • @Pacha不,cpp文件不需要它们. (3认同)
  • @Pacha 不,你应该用它们包围你的头文件(用你的文件名替换`FILE_H`)。 (2认同)