我在sfml方面遇到了一些问题,标题中的错误目前正在向我抛出。
这是我创建的类
#include <SFML/Graphics.hpp>
#ifndef SNAKEHEAD_H
#define SNAKEHEAD_H
class SnakeHead
{
private:
int iPosX;
int iPosY;
public:
sf::RectangleShape snakeHead;
SnakeHead();
SnakeHead(int iX, int iY);
bool wallCheck();
bool collideCheck(int iX, int iY);
void move(char cMovement);
sf::RectangleShape createSquare();
};
#endif
这是主要代码的重要部分
SnakeHead player1();
SnakeHead* player2 = player1;
顺便说一句,我这么做只是为了解决另一个问题。我得到的另一个错误是:;表达式必须具有类类型";
以下是类函数的重要部分
sf::RectangleShape SnakeHead::createSquare()
{
snakeHead.setSize(sf::Vector2f(20.f, 20.f));
snakeHead.setOrigin(0.f, 0.f);
snakeHead.setPosition(iPosX, iPosY);
snakeHead.setFillColor(sf::Color::Red);
return snakeHead;
}
这是主要代码的重要部分
window.draw(player1.createSquare());
您的以下代码没有达到预期效果:
SnakeHead player1();
上面的代码声明了一个函数player1()
,该函数不接受任何参数,并按值返回一个SnakeHead
对象。这是由于C++最麻烦的解析。
您可以使用大括号而不是括号来创建SnakeHead
对象player1
:
SnakeHead player1{};
或者干脆去掉括号:
SnakeHead player1;