07.10.2013, 23:26. Просмотров 860. Ответов 5
Граждане, есть такой пример:
C++ |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| class B
{
private:
virtual void f() { std::cout << "B::f()" << std::endl;}
public:
void g() { std::cout << "B::g()" << std::endl;}
};
class D : public B
{
private:
double g;
public:
void f() { std::cout << "D::f()" << std::endl;}
};
int main(int, char**)
{
D d;
d.g();
return 0;
} |
|
Скажите, пожалуйста, почему этот код не компилится? Точнее ошибку компилятора я могу прочитать, но не могу взять в толк какой принцип c++ мешает компиляции кода. Про сокрытие методов понятно, но здесь же идет четкий вызов функции, а не доступ к закрытой переменной. Почему не видит метод g класса B?