c++ - 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++ 最令人烦恼的 parse。
您可以使用花括号而不是括号来创建SnakeHead
对象,player1
:
SnakeHead player1{};
或者干脆删除括号:
SnakeHead player1;
推荐阅读
- mysql - 无法识别的语句类型。(靠近 REVOKE)在 MYSQL
- angular - ng build -prod --output-hashing none 有什么用?
- python - 在 Pandas groupby 中显示较低的级别
- java - ArrayList 方法逻辑问题
- javascript - Multer 没有上传,但它不会给我任何错误
- branch-prediction - gem5中查看分支预测器的参数
- php - 如何使用 Firebase 中的用户身份验证更改 Laravel 中的 User::Model
- java - Java Annotation @Target(ElementType.TYPE_USE) - 还涵盖声明上下文?
- c - 使用 llvm opt 进行源到源转换
- python - 需要 Python 代码帮助以从列表创建 RDD