Я использую «g++ (GCC) 4.1.1 20061011 (Red Hat 4.1.1-30)».
Мои исследования показывают, что в gcc 4.x могут возникнуть проблемы, связанные с отказом от
чистых виртуальных функций (т. е. class bueller{ virtual int cameron()=0;};),
но нет... Я думаю, вы бы назвали их обычными... виртуальными функциями.
Просто чтобы мы были на одной волне.. .
foo.h
Код: Выделить всё
class Foo
{
void Foo_A() __attribute__((deprecated)); //non-virtual
virtual void Foo_B() __attribute__((deprecated)); //virtual
virtual void Foo_C() __attribute__((deprecated)) = 0; //pure virtual
};
1 )Все, что использует Foo_A(), действительно отображает предупреждение.
2)Все, что использует Foo_B(), НЕ отображает предупреждение.
3)Все, что наследует Foo, реализует Foo_C, а затем использует его, не выдавая предупреждения.
Номер 1: работает, нет проблем.
Номер 3: похоже на известную ошибку/функцию... неважно...
Однако для №2, похоже, нет объяснения.
Возможно, это связано с №3, хотя ничего из того, что я нашел, не упоминается это.
Кто-нибудь знает, не упускаю ли я здесь что-нибудь относительно обычных функций-членов виртуального класса, которые я хочу объявить устаревшими?
Кстати: -Wno-deprecate НЕ включен в моих make-файлах.
Подробнее здесь: https://stackoverflow.com/questions/432 ... -functions
Мобильная версия