我想知道为什么这个功能无法访问。
功能:
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(这 - > BattlefieldReadyUp); //无法访问
我收到错误的地方。
答案 0 :(得分:3)
它无法访问,因为它是protected
而不是public
。
protected
表示您只能从同一个或派生的类中访问它。由于您没有指明代码的位置,我只是假设它不是那些。
答案 1 :(得分:1)
C ++中的protected
函数只能由类本身和派生类访问,而不能在类外部访问,因此您将收到函数无法访问的错误消息。
答案 2 :(得分:1)
首先,它被标记为protected
,因此非派生类将无法看到它。
其次,它不是静态的,它让我觉得你好像在呼唤它一样。除非你有一个名为EventableObject
的对象 instance ,否则你需要一个实例引用来调用该函数,即
EventableObject ev;
ev.RemoveEvent( this->ReadyUp );
当然,除非你已经将事件添加到其他地方,否则该代码没有多大意义,但希望你能得到这个想法。
答案 3 :(得分:0)
EventableObject
是一种类型。
您需要该类型的对象才能调用成员函数。
答案 4 :(得分:0)
EventableObject::RemoveEvent
未声明为static
。这意味着您需要EventableObject
类型的对象才能调用EventableObject::RemoveEvent
。
EventableObject::RemoveEvent
被声明为protected
。这意味着它只能从类EventableObject
本身和派生类中调用。如果您必须从其他位置拨打电话,请将其设为public
。