Вот пример, чтобы проиллюстрировать мою проблему:принизить неиспользованный виртуальный метод
class Foo1
{
virtual void FooMethod() __attribute__((deprecated)) = 0;
};
class Foo2 : public Foo1
{
virtual void FooMethod() = 0;
};
Моего класс Foo1
имеет чисто виртуальный метод FooMethod
. Я не хочу, чтобы пользователь использовал его больше. Я хочу, чтобы они использовали этот метод в унаследованном классе Foo2
. Foo1::FooMethod()
так устарел и помещен в Foo2
: Foo2::FooMethod()
. Foo2::FooMethod()
является тогда опцией Foo1::FooMethod();
Если пользователь попытается перегрузить Foo1::FooMethod()
, он получит предупреждение о компиляции. Моя проблема в том, что если пользователь переопределяет Foo2::FooMethod()
, он также получает предупреждение.
Как я могу реализовать «Перегрузка Foo1::FooMethod()
устарела, вы должны переопределить FooMethod()
через Foo2
». Я не могу удалить Foo1::FooMethod()
для совместимости.
Спасибо!
Это не то, что нужно для осуждения, вы должны избегать этого метода полностью, потому что он исчезнет в более поздней версии, так что это включает перегрузку. – Blindy
Перегрузки не являются. –
Прежде всего, вы не перегружаете, вы переопределяете. И вы всегда относитесь к обоим версиям базового класса и, следовательно, к предупреждению. – PlasmaHH