【问题标题】:I cant acces functions of a base class我无法访问基类的函数
【发布时间】:2019-01-05 21:44:27
【问题描述】:

目前,我正在学习 c++,只是为了好玩,我想编写一个小象棋游戏(当然没有 AI)。除了使用 Visual Studio 社区外,我还使用 SFML 2.5 作为渲染器和图形对象。我试图为所有人物制作一个名为“人物”的模型。所以我有一个继承自 sfml sprite(可绘制对象)的图形类和一个典当类 f.e。从图中继承。 Sf:: sprite -> figure-> pawn/queen/tower 等...但是由于某种原因,我不能将 pawn 用作 sprite,例如,我不能用我的 windowRenderer 的绘制功能来绘制它. 但是函数文档说它需要一个可绘制对象。我收到一条错误消息,内容如下:无法访问的基类中的对话无效。我做错了什么还是不可能使用这样的精灵。这是我的构造函数,因为我认为我很可能在那里犯了错误。到目前为止,我只用 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);

【问题讨论】:

    标签: c++ inheritance sprite sfml


    【解决方案1】:

    试试这个

    class figure : public sf::Sprite
    

    类的继承默认是私有的。

    【讨论】:

      猜你喜欢
      • 2022-03-18
      • 1970-01-01
      • 2020-12-25
      • 1970-01-01
      • 1970-01-01
      • 2022-01-06
      • 2017-06-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多