小编Hox*_*bot的帖子

Friend函数无法访问私有成员变量

我有两节课,PlayerCharacter而且Ability.所述Ability类具有我声明作为一个纯虚函数friendPlayerCharacter.但是,我似乎无法访问friend声明的函数中的私有成员.这是我忽视的事情吗?

我已经尝试声明子函数而不是虚函数作为友元函数,但是没有效果.

player_chracter.h:

#include "ability.h"

class PlayerCharacter : public Character {
private:
    // Friend function
    friend bool Ability::ExecuteAbility(PlayerCharacter& in_player);

    // This doesn't work either
    //friend bool Dash::ExecuteAbility(PlayerCharacter& in_player);

    // Private variable
    float top_speed_;
}
Run Code Online (Sandbox Code Playgroud)

ability.h:

//Forward declaration
class PlayerCharacter;

class Ability {
public:
    Ability();
    ~Ability();
    virtual bool ExecuteAbility(PlayerCharacter& in_player) = 0;
};
//---------------------------------------------------------
class Dash : public Ability {
public:
    Dash();
    ~Dash();
    bool ExecuteAbility(PlayerCharacter& in_player);
};
Run Code Online (Sandbox Code Playgroud)

ability.cpp:

#include …
Run Code Online (Sandbox Code Playgroud)

c++ friend pure-virtual

3
推荐指数
1
解决办法
191
查看次数

继承:Child使用父虚函数而不是自己的虚函数

我有继承这个问题,我无法解决这个问题.我有三个班,他们之间有父母关系.它们都具有calcForces()函数.

class Object {
public:
    virtual void calcForces();
};


class Boat : public Object {
public:
    virtual void calcForces();
};


class Sailboat : public Boat {
public:
    void calcForces(Wind wind);
};
Run Code Online (Sandbox Code Playgroud)

现在我的问题是II有一个创建为Sailboat的对象(并将其保存在Object-pointer中),但是当我调用calcForces()时,我最终在Boat :: calcForces()中,而不是Sailboat :: calcForces().我究竟做错了什么?

这是我对函数的调用:

(*this->object_ptr_arr[i]).calcForces();    //'object_ptr_arr' is of type 'Object**'
Run Code Online (Sandbox Code Playgroud)

c++ inheritance virtual-functions

-1
推荐指数
1
解决办法
148
查看次数