MyWackoSite: Comment37

This is a comment on Спецкурс Cxx / Осень 2006 / Комментарии К Лекциям, posted by Maksim Ananjev at 2006-10-04 15:16:25
Например, вот (сразу отмечу, что автор этого кода – не я, меня не интересует. как в этой ситуации получить компилирующийся код, мне здесь интересна только логика компилятора)

class C

{

void fun(A::B *c);
};

class A

{

public:

class B{};
};

void C::fun(A::B *z)

{

}

int main() {}

Вот ошибки gcc-4,0:

f.cpp:3: error: ‘A’ has not been declared

f.cpp:3: error: ‘B’ has not been declared

f.cpp:12: error: prototype for ‘void C::fun(A::B*)’ does not match any in class ‘C’

f.cpp:3: error: candidate is: void C::fun(int*)