Код: Выделить всё
b.cpp:44:50: error: no matching function for call to ‘B::A(int, int)’
build] /cpp/b.h:56:10: note: candidate: ‘virtual void B::A()’
[build] 56 | void A();
[build] | ^~~~~~
[build] /cpp/B.h:56:10: note: candidate expects 0 arguments, 2 provided
< /code>
Вот упрощенный код: < /p>
struct A {
int a;
int b;
A(int a=0, int b=0): a(a), b(b) {}
}
class SuperB {
A some_var;
SuperB(A a): some_var(a) {}
};
class B: SuperB {
B(): SuperB(A(1,3)) {}
void A() {
do something
}
}
Я пытался изменить: < /p>
Код: Выделить всё
B(): SuperB(A(1,3)) {}to:
Код: Выделить всё
B(): SuperB(1) {}Это, по крайней мере, составлено, так как компилятор удалось найти конструктор struct a . Мой вопрос: почему? Почему компилятор не выясняет это? Я получаю этот void a () получает приоритет, но это явно не очень хороший кандидат. Почему он не перемещается вниз по списку?>
Подробнее здесь: https://stackoverflow.com/questions/793 ... e-function
Мобильная версия