19 апр. 2012 г.

C++. Объявление метода класса с указанием имени класса

Наткнулся вот на такое объявление класса, из-за которого gcc не захотел собирать проект:


class A
{
public:
void A::B();
}

void A::B()
{
return;
}


То бишь, при объявлении метода указывается квалификатор класса. Расследование показало, что старые и некоторые новые компиляторы поддерживают такую устаревшую нотацию (кстати, ни разу не встречал упоминания про такой метод объявления -- откуда он взялся -- пока не выяснил). Поэтому этот же код собирается в MS Visual Studio вплоть до 2010 версии. Сановский cc: Sun C 5.9 2010/08/11 тоже код пропустил. Однако имеющийся gcc v4.1.2 отказался собирать код со следующей ошибкой:

error: extra qualification ‘A::’ on member ‘B’

Четкого объяснения я не нашел. На форумах пишут только про то, что где-то оно компилится, где-то нет. В пункте "Extra qualification of members" этой страницы есть небольшое описание этой ошибки. Но никаких ссылок на документацию. Ежели есть какая-то информация по этому поводу, поделитесь, плз.

Комментариев нет:

Отправить комментарий