在派生类的overriden(new)函数中使用基类保护方法

时间:2012-07-23 21:30:23

标签: .net inheritance protected managed-c++ function-overriding

我试图完成类似于Java “super”调用的内容,我认为这样就可以了:

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
}
};

但它给了我“候选功能无法访问”错误。 “protected”修饰符是否不允许对其所有子类的基类元素进行访问? 我不知道它是否有任何区别,但我想覆盖的基类方法是由Base继承的。

1 个答案:

答案 0 :(得分:1)

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

base::funct();

它抱怨,因为在演员表之后,你有一个base的实例。 funct()函数受到保护,因此您无法在base的给定实例上调用它。