Код: Выделить всё
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
}
}
Я попытался изменить
b (): superb (a (1,3)) {}
to
b (): superb (1) {} < /p>
Это, по крайней мере, составлено, так как компилятор удалось найти конструктор struct. Мой вопрос в том, почему. Почему компилятор не выясняет это. Я получаю void a получает приоритет. Но это явно не хороший кандидат. Почему он не движется вниз по списку?>
Подробнее здесь: https://stackoverflow.com/questions/793 ... e-function
Мобильная версия