CEMb wrote:
> M>A::A() { ... }
>
> M>A::A(int i) : A() { i_ = i; }
>
> M>A::A(char c) : A() { c_ = c; }
> M>
>
>
>
> На это оно ругается
>
> error C2614: 'A' : illegal member initialization: 'A' is not a base
> or member
Это, наверное, была шутка. Это вам не Java.
Чтобы сделать такое, тебе нужно сделать отдельную функцию
инициализации, вероятно, приватную, и вызывать
её из каждого конструктора. При этом делать инициализацию
в списке инициализациии не получится.
Если нужно делать инициализацию в списке инициализации,
то придётся написать N функций, для каждого member-а.
Каждая функция должна быть статической и не присваивать в
теле мемберу что-то, а возвращать это что-то в виде значения:
class A
{
....
private:
static int initValFor_i(int i)
{
return i + 10;
}
};
A::A(int i) :
i_(initValFor_i(i))
{}
Posted via RSDN NNTP Server 2.1 beta