- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
所以我有一个 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/
我的应用程序上有一个登录系统,其中有一组预定义的用户,如下所示: User user = new User("tommy", "tommy", false); User user2 = new Use
我厌倦了以下问题。请帮忙?我有一个下面的界面 /** * Type of Timestamp. For ex: Date, long, Calendar etc * */ public interf
这里没有问题,只需要解释它是如何工作的。 我正在为我的 C# 类(class)做家庭作业,我设法按照教授提供的代码示例自行完成。问题是我不明白它是如何工作的。以下是让我感到困惑的事情: 首先,为什么我
class C1 { void A(); void B(); } void C1::A(){ return B(); } class C2 : public C1 { void
我有一组代码,它模拟了一个基本的图书馆编目系统。有一个名为 items 的基类,其中定义了通用 id、title 和 year 变量以及其他 3 个派生类(DVD、Book 和 CD)。 基础[元素]
似乎无法弄清楚这一点。我一直收到各种错误,所以我只用我从 Jackson 那里收到的当前错误来写这篇文章。 public class ResponseDetail { private Resp
我希望继承一些 D 类遗产并实现接口(interface) A、B 和 C 的所有属性和方法。请帮我举一个 Delphi 中的示例。 我用德尔福 Xe7 一个类如何实现多个接口(interface)?
看看我的问题: 我有一个如下所示的类: var els=[]; var base = function(){ this.config = {} } var X1 = function(){ }
我正在学习如何编写好的 Makefile。我必须编写几个 gcc 编译命令,这些命令会生成使用不同选项编译的不同文件。我读过有关 .SECONDEXPANSION 的内容,但它不太令我满意,因为它看起
我有很多不同的课程。但是,它们都可以保证具有某些方法,例如render()和Activate()。 我的目标是能够将它们全部存储在一个大列表中。目前,我有一个名为Container的大类,并且我做了类
让我们有一个 C++ 对象 A。A 中有两个变量(VAR1 和 VAR2)可供其子对象访问。对象 B 扩展了 A 并有一个私有(private)变量 VAR3,它还可以访问 VAR1 和 VAR2。
例如,我创建了一个鸟类类,我正在尝试创建一个 boolean 变量,它开始时不快乐,当它飞行时变为快乐,当它尝试游泳时又变回不快乐。 这是我的鸟类 public class Bird extends
我也有一个关于如何在两个类之间创建复制构造函数的问题。 > person(const person& a) : name(a.getName()), address(a.getAddress()),
好吧,这个例子对于我试图理解的概念来说非常简单明了。我将向您展示代码: class Base { protected: string name; public: virtual str
首先,我不太确定如何为我的问题命名。 我有一个关于继承的问题。 假设我创建了一个名为 Class_A 的类: class Class_A { public: int a;
我一直在谷歌上搜索和阅读相关内容,但还没有找到答案,也许有人可以帮我解决这个问题。 我希望我的 UserPile 类能够从我的 CardPile 类访问数据成员和类成员函数。我不断收到标题中提到的错误
假设我在一个类中有一些数据结构如下 class DataStructure { DataStructure(); ~DataStructure(); void reset();
我是一名优秀的程序员,十分优秀!