弃用未使用的虚拟方法

时间:2014-01-10 16:37:16

标签: c++ deprecated

这是一个说明我的问题的例子:

class Foo1
{
  virtual void FooMethod() __attribute__((deprecated)) = 0;
};

class Foo2  : public Foo1
{
  virtual void FooMethod() = 0;
};

我的班级Foo1有一个纯虚方法FooMethod。我不想让用户再使用它了。我想让它们在继承的类Foo2中使用此方法。 Foo1::FooMethod()已被弃用并放入Foo2Foo2::FooMethod()。然后Foo2::FooMethod()覆盖Foo1::FooMethod();

如果用户尝试重载Foo1::FooMethod(),他将收到编译警告。 我的问题是,如果用户覆盖Foo2::FooMethod(),他也会收到警告。

如何实施“不推荐重载Foo1::FooMethod(),您必须覆盖FooMethod()Foo2”。我无法删除Foo1::FooMethod()的兼容性。

谢谢!

1 个答案:

答案 0 :(得分:0)

  

如何实现“不推荐使用重载Foo1 :: FooMethod(),必须通过Foo2重载FooMethod()”。我无法删除Foo1 :: FooMethod()以获得兼容性。

此时,您在设计中造成了如此混乱(:P),我会坚持使用文档

告诉您的用户该功能已弃用且不应使用,然后继续。