С отсутствует экземпляр конструктора

Обновлено: 24.04.2024

Конструктор предназначен для инициализации объекта. Конструкторы делятся на конструкторы класса (для статических классов) и конструкторы экземпляра класса (всех остальных классов).

Конструкторы экземпляра

Конструктор экземпляра вызывается автоматически при создании объекта класса с помощью операции new. Имя конструктора совпадает с именем класса. Рассмотрим основные свойства конструкторов:

  1. Конструктор не возвращает значение, даже типа void .
  2. Класс может иметь несколько конструкторов с разными параметрами для разных видов инициализации.
  3. Если программист не указал ни одного конструктора или какие-то поля не были инициализированы, полям значимых типов присваивается нуль, полям ссылочных типов - значение null .

До сих пор мы задавали начальные значения полей класса при описании класса. Это удобно в том случае, когда для всех экземпляров класса начальные значения некоторого поля одинаковы. Если же при создании объектов требуется присваивать полю разные значения, это следует делать с помощью явного задания конструктора. В следующем примере добавлен конструктор и метод Print для вывода информации об объекте:

Часто бывает удобно задать в классе несколько конструкторов, чтобы обеспечить возможность инициализации объектов разными способами. Для этого конструкторы должны иметь разные сигнатуры. Рассмотрим это на примере:

Обратите внимание на то, что в конструктое 2 не были инициализированы поля x , y , поэтому им присваивается значение 0 .

Если один из конструкторов выполняет какие-либо действия, а другой должен делать то же самое плюс еще что-нибудь, то удобно вызвать первый конструктор из второго. Для этого используется уже известное вам ключевое слово this в другом контексте, например:

Конструкция, находящаяся после двоеточия, называется инициализатором , то есть тем кодом, который исполняется до начала выполнения тела конструктора. В нашем случае конструктор 1 до выполнения своего кода вызывает конструктор 2.

Конструкторы класса

Статические классы содержат только статические члены, в том числе и конструктор, которые хранятся в памяти в единственном экземпляре. Поэтому создавать экземпляры класса нет смысла.

В версию 2.0 введена возможность описывать статический класс, то есть класс с модификатором static . Экземпляры такого класса создавать запрещено, и кроме того, от него запрещено наследовать. Все элементы такого класса должны явным образом объявляться с модификатором static (константы и вложенные типы классифицируются как статические элементы автоматически). Конструктор экземпляра для статического класса задавать запрещается.

Свойства

Иногда требуется создать поле, которое с одной стороны, должно быть доступно для использования, с другой стороны, возможность что-то сделать с этим полем имеет ограничения. Например, полю нельзя присваивать произвольное значение, а только значения из какого-то диапазона. Свойство предлагает простой и удобный способ решения этой проблемы.

Значения спецификаторов для свойств и методов аналогичны. Чаще всего свойства объявляются как открытые (со спецификатором public ).

Код доступа представляет собой блоки операторов, которые выполняются при получении ( get ) или установке ( set ) свойства. Может отсутствовать либо часть get , либо set , но не обе одновременно. Если отсутствует часть set , то свойство доступно только для чтения. Если отсутствует часть get , то свойство доступно только для записи.

Рассмотрим пример работы со свойствами, обращая внимание на то, что синтаксически чтение и запись свойства выглядят почти как методы. При этом get должен содержать оператор return , возвращающий выражение, для типа которого должно существовать неявное преобразование к типу свойства.

"Один класс - один файл",

С добавлением новых классов в программу резко увеличивается ее размер, что затрудняет ее прочтение. Поэтому следует руководствоваться одним простым принципом "один класс - один файл". Для того чтобы создать новый файл для класса Circle выполним следующие действия:

и говоря, что T4.API.Position не имеет конструкторов по умолчанию.

но если я пойду

"В экземпляре объекта не задана ссылка на объект"

Поэтому мне нужно использовать "новое" ключевое слово, но я не могу, потому что он говорит, что у него нет конструктора по умолчанию

Я открыл свой класс Position, и у меня есть куча делегатов, если я буду использовать один из них?

однако конструктор по умолчанию отсутствует, у них есть конструктор с 3 аргументами, однако он является "внутренним",

Не знаете, как вызвать член Net, если я не могу создать экземпляр, потому что конструктор по умолчанию и единственный доступный конструктор не являются общедоступными, но внутренними?

Могут быть некоторые причины, по которым класс не будет иметь доступный конструктор по умолчанию:

    Единственный конструктор класса требует параметров Конструктор по умолчанию является закрытым, например, в singleton Класс статичен и не может быть инстансирован, как System.IO.File Класс является абстрактным и разработан как базовый класс для классов, которые вы должны использовать, например System.Drawing.Image

Я, наверное, забыл перечислить некоторые причины, но надеюсь, вы получите картину: у вас есть код, чтобы вы могли убедиться сами, мы не.

Как сообщает MSDN

Если класс не содержит деклараций конструктора экземпляра, автоматически создается конструктор экземпляра по умолчанию. Этот конструктор по умолчанию просто вызывает беззаметный конструктор прямого базового класса. Если у прямого базового класса нет доступного конструктора экземпляров без параметров, возникает ошибка времени компиляции. Если класс является абстрактным, то объявленная доступность для конструктора по умолчанию защищена. В противном случае объявленная доступность для конструктора по умолчанию является общедоступной.

В вашем случае вы должны отправлять свои запросы поставщикам API, поскольку мы не можем видеть код, и они являются лучшими врачами для этой проблемы.

Репутация: нет
Всего: нет

выдает ошибку "отсутствуют экземпляры конструктора , соответствующие списку аргументов"

Код

class Myclass: public MyClass2

Код

MyClass:MyClass( const string & a, const string & b, const string & v, const string & tmp) :MyClass2( a_t, b_t, v_t, tmp_t)

Код

class MyClass2
public:

Код

MyClass2:MyClass2( const string & a, const string & b, const string & v, const string & tmp) :( a_t(a), b_t(b), v_t(v), tmp_t(tmp))

Репутация: 35
Всего: 223

Что такое a_t, b_t, v_t, tmp_t ? Они нигде в ваших сорцах не упоминаются.

PS. Последний кусок:

Код

MyClass2:MyClass2( const string & a, const string & b, const string & v, const string & tmp) :( a_t(a), b_t(b), v_t(v), tmp_t(tmp))
Код

MyClass2:MyClass2( const string & a, const string & b, const string & v, const string & tmp) : a_t(a), b_t(b), v_t(v), tmp_t(tmp)

Репутация: нет
Всего: нет

Цитата(xvr @ 25.12.2018, 20:01)
Что такое a_t, b_t, v_t, tmp_t ? Они нигде в ваших сорцах не упоминаются.

PS. Последний кусок:

Код

MyClass2:MyClass2( const string & a, const string & b, const string & v, const string & tmp) :( a_t(a), b_t(b), v_t(v), tmp_t(tmp))
Код

MyClass2:MyClass2( const string & a, const string & b, const string & v, const string & tmp) : a_t(a), b_t(b), v_t(v), tmp_t(tmp)

std::string a_t;
std::string b_t;
std::string v_t;
std::string tmp_t;

Репутация: 35
Всего: 223

Где они находятся? В MyClass, MyClass2 или вообще среди глобалов?

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • FAQ раздела лежит здесь!

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.


0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »

[ Время генерации скрипта: 0.0973 ] [ Использовано запросов: 21 ] [ GZIP включён ]

Если конструктор Windows Forms не загружается из-за ошибки в коде, в стороннем компоненте или где-то еще, вместо конструктора появится страница ошибок. Эта страница ошибок не обязательно означает ошибку в конструкторе. Ошибка может находиться где-то на странице с выделенным кодом с именем .Designer.cs. Ошибки отображаются в свертываемых желтых строках со ссылкой для перехода к расположению ошибки на кодовой странице.

Windows Forms Designer error page

Вы можете игнорировать ошибки и продолжить загрузку конструктора, нажав кнопку Пропустить и продолжить. Это действие может привести к непредвиденному поведению, например, элементы управления могут не отображаться в области конструктора.

Экземпляры ошибки

При развертывании желтой строки ошибок отображается каждый экземпляр ошибки. Многие типы ошибок содержат точное местоположение в следующем формате: [имя_проекта][имя формы] строка:[номер строки] столбец:[номер столбца]. Если с ошибкой связан стек вызовов, можно щелкнуть ссылку Показать стек вызовов. Изучение стека вызовов может помочь устранить ошибку.

Windows Forms Designer expanded error

  • Для приложений Visual Basic на странице ошибок во время разработки отображается только одна ошибка, но может отображаться несколько экземпляров одной и той же ошибки.
  • Для приложений C++ ошибки не содержат ссылок на расположение кода.

Справка по ошибке

Ошибки времени разработки

В этом разделе перечислены потенциальные ошибки.

не является допустимым идентификатором

Эта ошибка указывает, что поле, метод, событие или объект имеют неправильное имя.

уже существует в

отсутствует на панели элементов

Сторонний конструктор пытался получить доступ к вкладке на панели элементов, которая не существует. Обратитесь к поставщику компонентов.

Синтаксический анализатор запрошенного языка не установлен

Отсутствует служба, которая требуется для генерирования и анализа исходного кода

Это проблема со сторонним компонентом. Обратитесь к поставщику компонентов.

Произошло исключение при попытке создать экземпляр

Сторонний конструктор запросил у Visual Studio создание объекта, но объект вызвал ошибку. Обратитесь к поставщику компонентов.

Документ открыт в несовместимом режиме в другом редакторе

Изменения в документ уже внесены в другом редакторе

Закройте и снова откройте конструктор, чтобы изменения вступили в силу. Как правило, Visual Studio автоматически перезагружает конструктор после внесения изменений. Однако другие конструкторы, такие как сторонние конструкторы компонентов, могут не поддерживать поведение перезагрузки. В этом случае Visual Studio предлагает закрыть и повторно открыть конструктор вручную.

Файл открыт в несовместимом режиме в другом редакторе

Слишком высокий ранг массива

Visual Studio поддерживает только одномерные массивы в блоке кода, анализируемом конструктором. Многомерные массивы допустимы за пределами этой области.

Не удалось открыть сборку Неправильный тип элемента. Этот сериализатор ожидает элемент типа

Это проблема со сторонним компонентом. Обратитесь к поставщику компонентов.

Не удается получить доступ к панели элементов Visual Studio

Visual Studio сделала вызов к панели элементов, которая была недоступна. Если вы видите эту ошибку, зарегистрируйте ее с помощью функции Сообщить о проблеме.

Не удается привязать обработчик событий к событию , так как событие доступно только для чтения

Эта ошибка чаще всего возникает при попытке подключить событие к элементу управления, наследуемому от базового класса. Если переменная, входящая в элемент управления, является закрытой, Visual Studio не удается подключить событие к методу. К наследуемым в частном порядке элементам управления невозможно привязывать дополнительные события.

Не удается создать имя метода для указанного компонента, так как он не является членом контейнера конструктора

Visual Studio попыталась добавить обработчик событий в компонент, не имеющий переменной-члена в конструкторе. Обратитесь к поставщику компонентов.

Не удается присвоить объекту имя , поскольку у него уже есть имя

Это внутренняя ошибка в сериализаторе Visual Studio. Она указывает, что сериализатор дважды пытался назвать объект, что не поддерживается. Если вы видите эту ошибку, зарегистрируйте ее с помощью функции Сообщить о проблеме.

Не удается удалить или уничтожить унаследованный компонент

Наследуемые элементы управления находятся под контролем наследующего класса. Изменения в наследуемом элементе управления должны быть внесены в класс, из которого создается элемент управления. Таким образом, нельзя переименовать или уничтожить его.

В категории нет инструмента для класса

Конструктор пытался ссылаться на класс на определенной вкладке панели элементов, но класс не существует. Обратитесь к поставщику компонентов.

Для класса отсутствует соответствующий конструктор

Сторонний конструктор запросил Visual Studio создать объект с определенными параметрами в конструкторе, который не существует. Обратитесь к поставщику компонентов.

Не удалось создать код для свойства

Компонент не вызвал метод Container.Add() в своем конструкторе

Это ошибка в компоненте, который вы только что загрузили или поместили в форму. Она указывает, что компонент не добавил себя в контейнерный элемент управления (будь то другой элемент управления или форма). Конструктор продолжит работу, но во время выполнения могут возникнуть проблемы с компонентом.

Имя компонента не может быть пустым

Эта ошибка возникает при попытке переименовать компонент в пустое значение.

Не удалось получить доступ к переменной , так как она еще не инициализирована

Эта ошибка может возникнуть из-за двух сценариев. У стороннего поставщика компонентов возникла проблема с элементом управления или компонентом, которые они распространили, или написанный вами код имеет рекурсивные зависимости между компонентами.

Не удалось найти тип Не удалось загрузить тип

Не удалось найти шаблоны элементов проекта для унаследованных компонентов

Шаблоны для унаследованных форм в Visual Studio недоступны. Если вы видите эту ошибку, зарегистрируйте ее с помощью функции Сообщить о проблеме.

Делегат класса не имеет метод вызова. Является ли этот класс делегатом

Visual Studio попыталась создать обработчик событий, но с типом события возникла ошибка. Это может произойти, если событие было создано языком, не соответствующим CLS. Обратитесь к поставщику компонентов.

Повторное объявление члена

Эта ошибка возникает из-за того, что переменная-член была объявлена дважды (например, два элемента управления Button1 объявляются в коде). Имена должны быть уникальными в унаследованных формах. Кроме того, имена не могут различаться только регистром.

Ошибка чтения ресурсов из файла ресурсов для языка и региональных параметров

Эта ошибка может возникнуть, если в проекте имеется неправильный RESX-файл.

Ошибка чтения ресурсов из файла ресурсов для языка и региональных параметров по умолчанию

Эта ошибка может возникнуть, если в проекте имеется неправильный RESX-файл для языка и региональных параметров по умолчанию.

Не удалось проанализировать метод Недопустимое имя компонента:

Тип класса образуется несколькими разделяемыми классами из того же файла

При определении класса в нескольких файлах с помощью ключевого слова partial в каждом файле может быть только одно частичное определение.

Чтобы устранить эту ошибку, удалите все, кроме одного частичного определения класса из файла.

Не удалось найти сборку

Недопустимое имя сборки .

Компонент запросил определенную сборку, но имя, предоставленное компонентом, не является допустимым именем сборки. Обратитесь к поставщику компонентов.

Не удается создать базовый класс

Visual Studio загрузила класс, но этот класс не может быть создан, так как средство реализации класса не предоставило конструктор. Если класс поддерживает конструктор, убедитесь, что у вас нет проблем, вызывающих ошибки с отображением в конструкторе, например ошибки компилятора. Кроме того, убедитесь, что все ссылки на класс правильные, все имена классов написаны без ошибок. В противном случае, если класс недоступен для создания, измените его в представлении кода.

Не удалось загрузить базовый класс

Невозможно создать класс в этой версии Visual Studio

Конструктор для этого элемента управления или компонента не поддерживает те же типы, что и Visual Studio. Обратитесь к поставщику компонентов.

Имя класса в этом языке является недопустимым идентификатором

Не удается добавить компонент, так как он содержит циклическую ссылку на

Нельзя добавить элемент управления или компонент в него же. Другая ситуация, когда это может произойти: в методе InitializeComponent формы (например, Form1) есть код, который создает другой экземпляр Form1.

Невозможно изменить конструктор

Эта ошибка возникает, когда файл в редакторе помечается как доступный только для чтения. Убедитесь, что файл не помечен только для чтения и приложение не запущено.

Для данного файла не удалось отобразить конструктор, так как в нем отсутствуют классы для разработки

Эта ошибка возникает, когда Visual Studio не удается найти базовый класс, удовлетворяющий требованиям конструктора. Формы и элементы управления должны быть производными от базового класса, поддерживающего конструкторы. Если вы создаете производный элемент из унаследованной формы или элемента управления, убедитесь, что проект создан.

Не установлен конструктор базового класса

Visual Studio не удалось загрузить конструктор для класса. Если вы видите эту ошибку, зарегистрируйте ее с помощью функции Сообщить о проблеме.

Конструктор должен создать экземпляр типа , однако сделать это не удалось, поскольку тип объявлен абстрактным

Эта ошибка произошла из-за того, что базовый класс объекта, передаваемого конструктору, является абстрактным, а это запрещено.

Не удалось загрузить файл в конструктор

Базовый класс этого файла не поддерживает конструкторы. В качестве обходного решения используйте представление кода для работы с файлом. Щелкните правой кнопкой мыши файл в обозревателе решений и выберите пункт Просмотр кода.

Язык этого файла не поддерживает службы, необходимые для создания и разбора кода

Эта ошибка, скорее всего, возникла из-за открытия файла, который находится в проекте, не поддерживающем конструкторы.

Класс синтаксического анализатора языка не реализован должным образом.

Используемый язык зарегистрировал класс конструктора, который не является производным от правильного базового класса. Обратитесь к поставщику используемого языка.

Имя уже используется другим объектом

Это внутренняя ошибка в сериализаторе Visual Studio. Если вы видите эту ошибку, зарегистрируйте ее с помощью функции Сообщить о проблеме.

В объекте не реализован интерфейс IComponent

Visual Studio попыталась создать компонент, но созданный объект не реализует интерфейс IComponent. Обратитесь к поставщику компонентов за исправлением.

Объект вернул пустое значение для свойства , что недопустимо

Объект данных сериализации имеет неверный тип

Объект данных, предлагаемый сериализатором, не является экземпляром типа, соответствующего используемому текущему сериализатору. Обратитесь к поставщику компонентов.

Не удается определить расположение требуемой службы

Служба, необходимая Visual Studio, недоступна. Если вы пытались загрузить проект, который не поддерживает этот конструктор, используйте редактор кода для внесения необходимых изменений. В противном случае, если вы видите эту ошибку, зарегистрируйте ее с помощью функции Сообщить о проблеме.

Экземпляр службы должен быть производным от интерфейса или содержать его реализацию

Эта ошибка указывает, что компонент или конструктор компонентов вызвал метод AddService, для которого требуется интерфейс и объект, но указанный объект не реализует указанный интерфейс. Обратитесь к поставщику компонентов.

Не удалось изменить текст в окне кода

Эта ошибка возникает, если Visual Studio не удается изменить файл из-за проблем с местом на диске или памятью, или файл помечен только для чтения.

Объект перечислителя панели элементов поддерживает одновременное извлечение только одного элемента

Если вы видите эту ошибку, зарегистрируйте ее с помощью функции Сообщить о проблеме.

Из панели элементов не удалось загрузить элемент для компонента

Указанный компонент вызвал исключение при доступе к нему Visual Studio. Обратитесь к поставщику компонентов.

Из панели элементов не удалось загрузить элемент для элемента панели элементов

Эта ошибка возникает, если данные в элементе панели элементов повреждены или версия компонента изменилась. Попробуйте удалить элемент из панели элементов и добавить его снова.

Не удалось найти тип .

При загрузке конструктора Visual Studio не удалось найти тип. Убедитесь, что имеется ссылка на сборку, содержащую тип. Если сборка является частью текущего проекта разработки, убедитесь, что проект создан.

Служба разрешения типов может быть вызвана только из потока основного приложения

Переменная либо не объявлена, либо никогда не присваивалась

Для команды меню уже существует обработчик команд

Эта ошибка возникает, если сторонний конструктор добавляет команду, которая уже имеет обработчик в таблице команд. Обратитесь к поставщику компонентов.

Компонент с именем уже существует

Сторонний компонент выполнил обратный вызов к элементу на вкладке панели элементов, но элемент уже содержал обратный вызов. Обратитесь к поставщику компонентов.

Языковые средства для данного языка не поддерживаю CodeModel, с помощью которой загружается конструктор

Тип не имеет конструктора с параметрами типов

Visual Studio не удалось найти конструктор с соответствующими параметрами. Это может быть результатом предоставления конструктора с типами, отличными от требуемых. Например, конструктор Point может принимать два целых числа. Если вы указали число с плавающей запятой, возникает эта ошибка.

Не удается добавить ссылку в текущее приложение

Не удалось извлечь текущий файл

Эта ошибка возникает при изменении файла, который в настоящее время записывается в систему управления исходным кодом. Как правило, Visual Studio представляет диалоговое окно возврата файла, чтобы пользователь мог извлечь файл. На этот раз файл не был извлечен, возможно, из-за конфликта слияния во время возврата. Чтобы устранить эту ошибку, убедитесь, что файл не заблокирован, а затем попробуйте извлечь файл вручную.

Не удается найти страницу с именем

Эта ошибка возникает, когда конструктор компонентов запрашивает доступ к странице из диалогового окна "Параметры", используя имя, которое не существует. Обратитесь к поставщику компонентов.

Не удается найти свойство на странице

Эта ошибка возникает, когда конструктор компонентов запрашивает доступ к определенному значению на странице из диалогового окна "Параметры", используя значение, которое не существует. Обратитесь к поставщику компонентов.

В Visual Studio не удается открыть конструктор файла, так как класс этого файла не унаследован от класса, поддерживающего визуальную разработку

В Visual Studio не удается сохранить или загрузить экземпляры типа

Это проблема со сторонним компонентом. Обратитесь к поставщику компонентов.

Документ не удалось открыть в Visual Studio в представлении конструктора

Эта ошибка указывает, что язык проекта не поддерживает конструктор и возникает при попытке открыть файл в диалоговом окне "Открыть файл" или из Обозревателя решений. Вместо этого измените файл в представлении кода.

В Visual Studio не удалось найти конструктор для классов типа

Visual Studio загрузила класс, но класс невозможно создать. Вместо этого измените класс в представлении кода, щелкнув класс правой кнопкой мыши и выбрав Просмотреть код.

При компиляции возникает ошибка в этой строке :

Ошибка 69 error C2664: "WorldSession::WorldSession(const WorldSession &)": невозможно преобразовать аргумент 2 из "const char [1]" в "std::shared_ptr" D:\Full core\335source-mastercrazy\src\server\game\Handlers\CharacterHandler.cpp 1102 1 game

74 IntelliSense: отсутствуют экземпляры конструктора "WorldSession::WorldSession", соответствующие списку аргументов
типы аргументов: (uint32, const char [1], int, AccountTypes, uint8, int, LocaleConstant, int, bool) d:\Full core\335source-mastercrazy\src\server\game\Handlers\CharacterHandler.cpp 1102 45 game

WorldSession* botSession = new WorldSession(lqh->GetAccountId(), "", NULL, masterSession->GetSecurity(), masterSession->Expansion(), 0, masterSession->GetSessionDbcLocale(), 0, false);



Прошу прощения, но в моем представлении человек, продающий готовые сборки, должен хотя бы знать язык, на котором написано ядро.
И ведь если Вы его не знаете, то и толку от моего объяснения будет немного. Но я все-таки напишу.

Выделенная Вами строка - инициализация указателя на объект типа WorldSession адресом, полученным в результате выделения памяти из кучи (heap / dynamic (runtime) allocation), на которой создается новый объект типа WorldSession. Все, что стоит внутри скобок, - аргументы, которые передаются конструктору этого типа (если просто, конструктор - функция, вызываемая относительно объекта, при его создании). Стоит отметить, что оператор new, видимо, перегружен для данного типа, иначе, раз здесь не (std::nothrow) использование, в случае неудачного выделения памяти выбросится исключение std::bad_alloc, а возвращение nullptr (который и проверяют следующей инструкцией в коде) не произойдет. Если он не перегружен - возможно Вам стоит посмотреть и этот момент. Конкретная же ошибка компиляции заключается в том, что одним из своих параметров (вторым) конструктор ожидает получать шаблонный объект (template class/struct) типа std::shared_ptr (один из типов стандартных "умных указателей" (smart pointer'ов)), Вы же передаете ему const char* (указатель на строку в статической read-only области памяти, состоящей из одного лишь в вашем случае символа: '\0'). Неявное преобразование типов, допустимое для выполнения компилятором, в данной ситуации невозможно, и он просто-напросто сообщает об ошибке и прерывает компиляцию данного файла.

Из возможных "быстрых" решений могу предложить Вам перепроверить, весь ли патч Вы накатили (возможно, что он предполагал изменение описания класса WorldSession, добавляя новую версию конструктора, на которую здесь и ссылается, а Вы это упустили). Если точно уверены, что весь, и что не может быть никаких несовместимостей версий ядра и патча / ошибки Вашего авторства, то остается лишь один вариант: ошибка писавшего патч, хотя такой вариант крайне маловероятен (хотя предоставленный Вами кусок и не лишен иных сомнительных приемов написания).

Читайте также: