Я пытаюсь понять множественное наследование, вот мой код:
struct A {
A() {}
static int n;
static int increment() { return ++n; }
};
int A::n = 0;
struct B : public A {};
struct C : public A {};
struct D : public B, C {};
int main() {
D d;
cout<<d.increment()<<endl;
cout<<d.increment()<<endl;
}
Этот код работает. Однако, если я изменю increment()
на нестатический, это не сработает.
Мои вопросы:
- Почему компилятор жалуется на неоднозначный вызов нестатической версии
increment()
, но удовлетворяет статическому? - Если я добавлю другую функцию
increment()
в B или C, компилятор тоже будет жаловаться, даже объявлен как статический. Почему?