﻿# V670\. Uninitialized class member is used to initialize another member\. Remember that members are initialized in the order of their declarations inside a class\.

Анализатор обнаружил возможную ошибку в списке инициализации конструктора класса\. Согласно стандарту порядок инициализация членов класса в конструкторе происходит в порядке их объявления в классе\. В программе есть конструктор, где инициализация одного члена класса зависит от другого\. При этом используемая для инициализации переменная, в этот момент ещё не инициализирована\.

Рассмотрим пример такого конструктора:

```cpp
class Foo
{
  int foo;
  int bar;
  Foo(int i) : bar(i), foo(bar + 1) { }
};
```

Переменная 'foo' будет инициализироваться первой\! В этот момент переменная 'bar' еще не инициализирована\. Для исправления ошибки следует перенести объявление члена класса 'foo' выше объявления члена класса 'bar'\. Исправленный вариант кода:

```cpp
class Foo
{
  int bar;
  int foo;
  Foo(int i) : bar(i), foo(bar + 1) { }
};
```

Если изменить последовательность полей в классе нельзя, то следует изменить выражения для инициализации:

```cpp
class Foo
{
  int foo;
  int bar;
  Foo(int i) : bar(i), foo(i + 1) { }
};
```