gpt4 book ai didi

c++ - 我搞砸了我的遗产

转载 作者:太空狗 更新时间:2023-10-29 23:24:17 25 4
gpt4 key购买 nike

所以我有一个 Piece 类应该代表棋盘上的棋子,我计划从中继承其他两个类。然而,我在这样做时遇到了很多问题;这是到目前为止的相关代码。

///
/// PIECE CLASS HERE
/// this is an abstract class from which Barrier and Pawn inherit.

class Piece
{
public:
Piece(Space* start);
sf::Shape m_Circle;
protected:
int m_X;
int m_Y;
int m_radius;
Space* CurrentSpace;
};

Piece::Piece(Space* start):
m_X(start->GetX()),
m_Y(start->GetY()),
m_radius(14),
CurrentSpace(start)
{}

///
/// BARRIER CLASS HERE
/// these are the white stones that block a player's path

class Barrier : public Piece
{
public:
Barrier(Space* initial);
void Move(Space* target, bool isCapturing);
};

Barrier::Barrier(Space* initial)
{
Piece(initial);
m_Circle = sf::Shape::Circle((float)m_X, (float)m_Y, (float)m_radius, sf::Color(255, 255, 255));
Move(initial);
}

void Barrier::Move(Space* target, bool isCapturing)
{
int xChange = abs(target->GetX() - m_X);
int yChange = abs(target->GetY() - m_Y);
m_Circle.Move((float)xChange, (float)yChange);
CurrentSpace.ToggleOccupied();
if(!isCapturing)
{
(*target).ToggleOccupied();
}
CurrentSpace = target;
}

我遇到了很多我不明白的错误,尤其是:

no matching function for call to Piece::Piece()
declaration of 'Piece initial' shadows a parameter
no matching function for call to 'Barrier::Move(Piece&)'
request for member 'ToggleOccupied' in '((Barrier*)this)->Barrier::<anonymous>.Piece::CurrentSpace', which is of non-class type 'Space*'|

作为 C++ 的新手,我不明白其中有什么问题。我试图构建我的代码,类似于我在学习 C++ 的书中找到的代码,但显然我忽略了一些微妙之处。我尝试调用的所有函数似乎都存在于适当的位置,我认为我使用与它们原型(prototype)中相同的值来定义它们。

最佳答案

第一个错误是这样引起的:

Barrier::Barrier(Space* initial)
{
Piece(initial);
m_Circle = sf::Shape::Circle((float)m_X, (float)m_Y, (float)m_radius, sf::Color(255, 255, 255));
Move(initial);
}

需要看起来像:

Barrier::Barrier(Space* initial) : Piece(initial)
{
m_Circle = sf::Shape::Circle((float)m_X, (float)m_Y, (float)m_radius, sf::Color(255, 255, 255));
Move(initial);
}

基类的构造函数在您的构造函数之前运行(无论如何)——如果它需要初始化列表中的参数,您需要将参数传递给它。

我不确定其他错误,因为我不知道它们发生在哪一行。

关于c++ - 我搞砸了我的遗产,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6347637/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com