我在使用 sfml 时遇到了一些麻烦,并且当前向我抛出了标题错误。
这是我创建的类</p>
#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++'s most vexing parse .
您可以使用大括号而不是括号来创建SnakeHead
对象,player1
:
SnakeHead player1{};
或者直接删除括号:
SnakeHead player1;
关于C++ 类型 "SnakeHead(*)()"的值不能用于初始化类型 "SnakeHead*"的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63248350/