class B{
private:
int q;
public:
B(int b){
q = b;
}
};
class A{
private:
int q;
B b;
public:
A(){
q = 1;
b = B.B(q); --как тут инициализировать переменную
}
};
в данном случае error: no matching function for call to 'B::B()'
используйте тэги для разметки.
Здравствуйте, Discordent, Вы писали:
D>class B{
D> private:
D> int q;
D> public:
D> B(int b){
D> q = b;
D> }
D>};
D>class A{
D> private:
D> int q;
D> B b;
D> public:
D> A(){
D> q = 1;
D> b = B.B(q); --как тут инициализировать переменную
D> }
D>};
D>в данном случае error: no matching function for call to 'B::B()'
A::A():q(1),b(1)
{
}
Здравствуйте, snoman, Вы писали:
S>S>A::A():q(1),b(1)
S>{
S>}
S>
Можно ещё так (если вместо единицы какое-то волосатое выражение):
A::A():q(1),b(q)
{
}
Только надо помнить, что инициализация будет исполняться в порядке объявления полей в описании класса A (т.е. сначала q, затем b), а не в порядке упоминания полей в списке инициализации — т.е. можно с одинаковым успехом написать A::A():b(q),q(1), всё равно сначал компилятор выполнит q(1), и только затем b(q).