C++功能无法访问

C++ Function is Inaccessible

本文关键字:访问 功能 C++      更新时间:2023-10-16

我想知道为什么无法访问此功能。

该函数:

class SERVER_DECL EventableObject
{
protected:
    void RemoveEvent(TimedEvent * ev);
};

这是我所拥有的:

Event * ReadyUp;
void Start()
{
    static uint8 Tick = 1;
    if(Tick == 1)
    {
        NormalMessage("Starting Event..");
    }
    EventableObject.RemoveEvent(this->ReadyUp); // Inaccessible
}

EventableObject.RemoveEvent(this->BattlefieldReadyUp(;//无法访问

是我收到错误的地方。

它无法访问,因为它是protected而不是public

protected意味着您只能从同一类或派生类中访问它。由于您没有指出代码所在的位置,因此我只是假设它都不是。

C++中的protected函数只能由类本身和派生类访问,而不能由类外部访问,因此您会收到该函数无法访问的错误消息。

首先,它被标记为 protected ,因此它对非派生类不可见。

其次,它

不是静态的,在我看来,你好像在称呼它。 除非你周围有一个名为 EventableObject 的对象实例,否则你需要一个实例引用来调用该函数,即

EventableObject ev;
ev.RemoveEvent( this->ReadyUp );

当然,除非您已经在其他地方添加了事件,否则该代码毫无意义,但希望您能理解这个想法。

EventableObject是一种类型。

您需要该类型的对象才能调用成员函数。

EventableObject::RemoveEvent 未声明static 。这意味着您需要一个类型 EventableObject 的对象来调用EventableObject::RemoveEvent

EventableObject::RemoveEvent被声明为protected .这意味着它只能从类EventableObject本身和派生类中调用。如果您必须从其他位置呼叫它,请使其public