C++11 似乎是错误的”;“未声明的标识符”;对于头文件
我有以下文件: Source.cppC++11 似乎是错误的”;“未声明的标识符”;对于头文件,c++11,sfml,C++11,Sfml,我有以下文件: Source.cpp #include "SFML\Graphics.hpp" #include "SpriteControl.h" using namespace sf; int main(int argc, char ** argv){...} SpriteControl.cpp #include "SFML\Graphics.hpp" #include "SpriteControl.h" using namespace sf; SpriteControl::Sprite
#include "SFML\Graphics.hpp"
#include "SpriteControl.h"
using namespace sf;
int main(int argc, char ** argv){...}
SpriteControl.cpp
#include "SFML\Graphics.hpp"
#include "SpriteControl.h"
using namespace sf;
SpriteControl::SpriteControl(){}
SpriteControl::SpriteControl(Texture textureIn){
texture = textureIn;}
SpriteControl::~SpriteControl(){}
void SpriteControl::setMoveable(bool in) {
isMoveable = in;}
void SpriteControl::setVelocity(float vx, float vy) {
if (isMoveable) {
velocity.x = vx;
velocity.y = vy;
}
}
Vector2f SpriteControl::getVelocity() {
return velocity;}
SpriteControl.h
#pragma once
class SpriteControl{
Texture texture;
Sprite sprite;
bool isMoveable;
Vector2f velocity;
public:
SpriteControl();
SpriteControl(Texture textureIn);
~SpriteControl();
Vector2f getVelocity();
void setMoveable(bool in);
void setVelocity(float vx, float vy);
};
当我尝试构建时,“texture”和“velocity”会出现未声明的标识符错误,构造函数也会出现“未找到重载成员函数”,“x的左边必须有class/struct/union”,“getVelocity不是SpriteControl的成员”等等。SpriteControl.cpp和SpriteControl.h文件的几乎每一行都有一个错误,这两个文件都没有任何意义。有什么想法吗
注意:SFML库都已正确链接。早期,没有任何头文件的程序的更简单版本编译并运行得很好。您需要更改包含顺序。纹理在SFML头中声明,并在头/源中使用,因此首先包括SFML头。我切换了顺序,没有更改。顺便说一句,在我尝试构建之前,这些错误实际上都没有在IntelliSense中出现-它们只在编译时出现。您的头文件可能看不到纹理、向量2F等,因为它们是在命名空间sf中定义的。太棒了,这两种答案的组合都起作用了!因此,当人们说“标题只是简单地复制并粘贴文本到#include位置”时,他们有点不真诚。标头仍然必须能够定位它所声明的资源。非常感谢你们的帮助,先生们!