Я не думаю, что это не сработает на вас, если вы не установили уровень предупреждения на 4 (или похожий, я полагаю, Visual Studio) и не включили «обрабатывать предупреждения как ошибки».предупреждение - это хорошо, так как оно не позволит вам случайно использовать указатель this
, когда то, на что он указывает, еще не построено.
Однако, когда вы знаете, что вывыполняются везде, где this
передается в списке инициализации, это будет раздражать предупреждение и ошибка, вызванные этим.
Вы можете избавиться от этого (опять же, предполагая Visual Studio), украшая конструктор (еслиопределяется в объявлении класса - тогда вы должны украсить весь класс):
// warning C4355: 'this' : used in base member initializer list
#pragma warning (push)
#pragma warning (disable : 4355)
some_class::some_class()
: ...
{
}
#pragma warning (pop)