我试图完成类似于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继承的。
答案 0 :(得分:1)
您的语法不正确,您可以像这样调用基本函数。
base::funct();
它抱怨,因为在演员表之后,你有一个base
的实例。 funct()
函数受到保护,因此您无法在base
的给定实例上调用它。