Это либо ошибка, либо сбой статического анализатора.Предполагается, что поведение должно реагировать на код следующим образом:
class circularList
{
public:
circularList() : data2(0), data1(this->data2) {}
public:
int data1;
int data2;
};
data2
фактически инициализируется после data1
(который выдает другое предупреждение), а выражение, начинающееся с this
, this->XXX
, вызывает проверку,В вашем случае ->XXX
нет и это смущает анализатор.Это должно быть регрессом, потому что некоторые сборки более старых компиляторов (таких же старых, как VS2005 или VS2008), или некоторые очень древние gcc
или lcc
(не стабильные сборки) выражали аналогичные проблемы.
Существует ещеслучай, когда this
не должен использоваться - если есть виртуальное наследование или если инициализация пытается вызвать виртуальную функцию.