C++ "SnakeHead(*)()" 类型的值不能用于初始化类型 "SnakeHead*" 的实体



我在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;

最新更新