C++11 似乎是错误的”;“未声明的标识符”;对于头文件

C++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

我有以下文件:

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::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位置”时,他们有点不真诚。标头仍然必须能够定位它所声明的资源。非常感谢你们的帮助,先生们!