假设我有一个提供公共模板方法的超类。子类必须实现一些子操作。我如何声明这个子操作以确保它们只能被调用SuperClass
?有protected
,但据我所知,这是相反的:子类可以访问受保护的超类成员。我想允许超类(并且只有超类!)调用子类成员。
class SuperClass{
public:
void templateMethod(){
this->op1();
this->op2();
}
// how to declare these? public? protected?
virtual void op1() = 0;
virtual void op2() = 0;
}
class SubClass : public SuperClass{
// how to declare these? public? protected?
virtual void op1() { ... };
virtual void op2() { ... };
}
我目前正在使用 C++ 和 Matlab,但我也对考虑其他语言的一些一般性评论非常感兴趣。