1. Пользуйтесь тегами кода. - [code] ... [/code] 2. Точно указывайте язык, название и версию компилятора (интерпретатора). 3. Название темы должно быть информативным. В описании темы указываем язык!!!
class b{ public: b(int x){} }; class a:b{ public: a(int x)/*:b(x)*/{}//[C++ Error] Unit1.cpp(49): E2251 Cannot find default constructor to initialize base class 'b' }; main(){}
Если надо сначала произвести какие-то действия над х в конструкторе а, и только потом его передать в конструктор b как надо действовать?
Ну, ошибка у тебя - потому что дефолтного конструктора (без параметров) на самом деле нет. Напиши так:
class b { public: b(int x = 0) {} }; class a: b { public: a(int x) {} };
- ошибки не будет... Но это проблемы-то не решает, дефолтный конструктор предка все равно будет вызван ДО того, как начнет выполняться тело конструктора A. К тому же обрати внимание, у тебя тип наследования не указан, это означает, что будет выбрано наследование частное: class a : b равносильно class a : private b, а не class a : public b. Разницу между общим и необщим наследованием знаешь?
Теперь по твоему вопросу: в общем случае так не делается. Сначала инициализируется базовый класс, и только потом производятся все нужные действия. Можно поподробнее, задача в чем состоит? Наверняка есть более подходящий способ решения.