Ошибка компиляции VS 1256 (целочисленное переполнение во внутренних вычислениях...) во время наследования

Моя проблема возникает во время компиляции Irrlicht3D Engine в VS 2008.

1> Ошибка 1256: целочисленное переполнение во внутренних вычислениях из-за размера или сложности "irr::IReferenceCounting"

В настоящее время я объединяю очень старый Softwaredriver, который я написал, с остальной частью двигателя, который намного новее. Основная проблема заключается в том, что я пытался решить проблемы абстрактного наследования. Но теперь я получаю эту ошибку, и она единственная. "irr::IReferenceCounting" является одним из базовых классов, используемых другими классами, унаследованными от. Что это значит? Я знаю, что целочисленное переполнение может быть нормальным переполнением, но почему это показано во время компиляции?

Любая помощь приветствуется!

-db

1 ответ

Решение

Сам компилятор должен выполнить некоторую целочисленную математику. Например, расчет sizeof(irr::IReferenceCounted) скорее всего, когда irr::IReferenceCounted используется в качестве базового класса. Это может привести к переполнению, если тип больше 4 ГБ.

Другие вопросы по тегам