我无法访问基函数 class
I cant acces functions of a base class
目前,我正在学习 C++,只是为了好玩,我想编写一个小国际象棋游戏(当然没有 AI)。我使用 visual studio 社区和 SFML 2.5 作为渲染器和图形对象。我试图为所有数字制作一个名为 "figure" 的模型。所以我有一个图 class 继承自 sfml sprite(可绘制对象)和一个 pawn class f.e。从图继承。 sf:: sprite -> figure-> pawn/queen/tower etc... 但由于某些原因,我不能将 pawn 用作 sprite,例如,我无法使用 windowRenderer 的 draw 函数绘制它.
但是功能文档说它需要一个可绘制对象。我收到一条错误消息,内容如下:基地 class 中无法访问的对话无效。我是不是做错了什么,或者是不可能使用这样的精灵。这是我的构造函数,因为我认为我很可能在那里犯了错误。到目前为止,我只在 java 中编码,所以头文件和实现文件的分离对我来说有点陌生,而且构造函数语法也不同。
figure.h:
class figure : sf::Sprite {
public:
figure(int startPosition);
void changeImage(std::string);
void dissapear();
void loadImage(std::string);
private:
sf::Image img;
};
figure.cpp:
figure::figure(int startPosition):sf::Sprite(){
}
pawn.h:
class pawn :
public figure
{
public:
pawn(int startPosition);
~pawn();
private:
void move(bool canBeat, bool isAsStart);
};
pawn.cpp:
pawn::pawn(int startPosition):figure (startPosition)
{
}
in main.cpp:
pawn pawn1(position);
sf::RenderWindow window(sf::VideoMode(sets.windowX, sets.windowY), "frame");
window.draw(pawn1);
试试这个
class figure : public sf::Sprite
类 的继承默认是私有的。
目前,我正在学习 C++,只是为了好玩,我想编写一个小国际象棋游戏(当然没有 AI)。我使用 visual studio 社区和 SFML 2.5 作为渲染器和图形对象。我试图为所有数字制作一个名为 "figure" 的模型。所以我有一个图 class 继承自 sfml sprite(可绘制对象)和一个 pawn class f.e。从图继承。 sf:: sprite -> figure-> pawn/queen/tower etc... 但由于某些原因,我不能将 pawn 用作 sprite,例如,我无法使用 windowRenderer 的 draw 函数绘制它. 但是功能文档说它需要一个可绘制对象。我收到一条错误消息,内容如下:基地 class 中无法访问的对话无效。我是不是做错了什么,或者是不可能使用这样的精灵。这是我的构造函数,因为我认为我很可能在那里犯了错误。到目前为止,我只在 java 中编码,所以头文件和实现文件的分离对我来说有点陌生,而且构造函数语法也不同。
figure.h:
class figure : sf::Sprite {
public:
figure(int startPosition);
void changeImage(std::string);
void dissapear();
void loadImage(std::string);
private:
sf::Image img;
};
figure.cpp:
figure::figure(int startPosition):sf::Sprite(){
}
pawn.h:
class pawn :
public figure
{
public:
pawn(int startPosition);
~pawn();
private:
void move(bool canBeat, bool isAsStart);
};
pawn.cpp:
pawn::pawn(int startPosition):figure (startPosition)
{
}
in main.cpp:
pawn pawn1(position);
sf::RenderWindow window(sf::VideoMode(sets.windowX, sets.windowY), "frame");
window.draw(pawn1);
试试这个
class figure : public sf::Sprite
类 的继承默认是私有的。