如何防止基类中的静态方法被覆盖

时间:2017-03-13 22:05:10

标签: c++ function static override

我有一个基类algorithmType,它包含所有算法(fifo,lru和amp;最佳)共有的成员变量和函数。

我在基类中有一个名为row的静态成员变量。它是静态的,因为它对于所有算法必须是相同的。

我有其他非静态函数,我只能在virtual前加上(并在C ++ 11中附加final)。

到目前为止,我的脏修复只是直接从基类创建一个对象,而不实例化它,并使用它来访问返回静态row成员变量的(现在)非静态函数。这样做的目的是让我轻松判断派生类是否具有与基类中的函数同名的函数(它将产生错误)。任何创建新派生类的人都不应该意外地通过他们可能需要从基类中命名的函数来命名。

final关键字非常有用,但不允许使用静态函数。

有什么建议吗?

class B
{
 private:
 static int row;

 public:
 static int getRow()
 {
  return row;
 }
}

class D : B
{
 public:

 int num;
 int getRow() // I want an error when I try to declare this function, like "final" does.
 {
  return num;
 }
}

0 个答案:

没有答案