0

我试图完成类似于Java “超级”调用的东西,我认为可以通过这种方式:

public ref class base {

public: base(){}

protected: virtual void funct()
{
   MessageBox::Show("base funct");
}
};

public ref class derived : public base
{
public: derived() : base(){}

protected: virtual void funct() new
{
((Base^)this)->funct();
///some work
}
};

但它给了我“候选函数不可访问”错误。“受保护”修饰符是否不会将基类元素的访问权授予其所有子类?我不知道它是否有任何区别,但我想要覆盖的基类方法也被基继承。

4

1 回答 1

1

您的语法不正确,您可以像这样调用基本函数。

base::funct();

它抱怨是因为,在演员表之后,你有一个base. 该funct()函数是受保护的,因此您不能在给定的base.

于 2012-07-23T22:02:26.903 回答