什么是"error C2061: syntax error : identifier "?
What is "error C2061: syntax error : identifier "?
当我编译有一个错误调用"错误C2061:语法错误:标识符'Player' "
我不知道我的代码出了什么问题。这是我的代码#include "Platform.h" #include "Player.h" class Collision { public: Collision(void); ~Collision(void); static bool IsCollision(Player &player, Platform& platform); };
"IsCollision"方法出错
Player.h
#include <SFML/Graphics.hpp>
#include "rapidxml.hpp"
#include <fstream>
#include <iostream>
#include "Collision.h"
using namespace rapidxml;
class Player
{
private:
sf::Texture playerTexture;
sf::Sprite playerSprite;
sf::Vector2u position;
sf::Vector2u source;
sf::Vector2u size;
int frameCounter, switchFrame, frameSpeed;
int walkSpriteWidth;
float velocity;
bool isWalk;
bool isStand;
bool isFaceRight;
public:
Player(void);
~Player(void);
void Init();
void Draw(sf::RenderWindow *window);
void MoveForward();
void MoveBackward();
void Update(sf::Clock *clock);
void SetSourceY(int value);
void SetWalk(bool value);
void SetFacing(std::string value);
void SetStand(bool value);
void Stand();
std::string GetStatus();
void PrintStatus();
sf::Vector2f GetPosition();
int GetWidth();
int GetHeight();
};
你有一个循环包含依赖。Collision.h包含Player.h,反之亦然。最简单的解决方案是从Player.h
中删除#include "Collision.h"
,因为Player
声明中不需要Collision
类。除此之外,看起来Collision.h
中的一些包含可以被前向声明取代:
// forward declarations
class Player;
class Platform;
class Collision
{
public:
Collision(void);
~Collision(void);
static bool IsCollision(Player &player, Platform& platform);
};
你可以把包含在Collision
的实现文件
这是一个很常见的错误——你有循环的include依赖。
查看您的代码,您应该将Collision.h
中的#include "Player.h"
替换为class Player;
。这被称为"前向声明",将打破循环依赖。
另外,最好添加include保护符,例如:
#ifndef MY_PLAYER_CLASS
#define MY_PLAYER_CLASS
...
#endif
循环依赖或者使用C编译器编译c++代码
相关文章:
- "error: no matching function for call to"构造函数错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 使用 LuaBridge 将 LuaJIT 绑定到C++会导致"PANIC: unprotected error"
- OpenMP卸载说'fatal error: could not find accel/nvptx-none/mkoffload'
- C++错误:"error: int aaa::bbb is protected within this context"
- 尝试链接我的着色器时,我收到错误代码"error c5145 must write to gl_position"
- C++,在int数组中输入字符串或字符会输出0,而不是ascii或error
- 使用 cmake 的 LLVM 构建在 tsan_libdispatch_mac.cc 期间失败; "Error: conflicting types for ..."
- C++ "error: invalid use of void expression"
- struct.error:解压缩 C++ 结构时,解包需要 288 字节的缓冲区
- 我看到"use of undeclared identifier"错误,有人可以告诉我如何解决它吗?
- 如何修复"error: ‘_1’ was not declared in this scope"?
- 为什么即使在定义之后仍存在"Identifier is undefined error "?
- 我正在尝试创建一个枚举,但得到了"identifier expected error"
- 如何解决"if"块中的"Undeclared identifier error"?
- "error C2065: undeclared identifier" 来自另一个标头的枚举
- 如何追查"syntax error: missing ')' before identifier"等原因?
- 接受C++"==" "Error: expected an identifier"
- 什么是"error C2061: syntax error : identifier "?
- "error C2065: 'ON_WM_THEMECHANGED' : undeclared identifier"