Никто не ответил, что фактически MemoryStream.GetBuffer возвращает выделенный буфер, а не реальные данные в этом буфере. В этом случае он возвращает 256-байтовый буфер, в то время как он содержит только 32 байта зашифрованных данных.
Я предполагаю, что ExitListener.h прямо или косвенно включает файл заголовка InitialGameState.h. Таким образом, существует циклическая зависимость между файлом заголовка, и компилятор не может найти объявление для ExitListener. Если вам просто нужно сохранить указатель ExitListener в этом классе, тогда нет необходимости включать файл заголовка ExitListener.h. Вместо этого вы можете просто использовать предварительное объявление как class ExitListener;
EDIT : вы можете использовать предварительное объявление, как предложено выше, или удалить включение InitialGameState.h из ExitListener.h. Вам нужно включить только GameState.h (файл заголовка базового класса). Но я предпочитаю использовать предварительные объявления в файле заголовка и включать файл заголовка только в cpp.
По-видимому, проблема в определении ExitListener, на тот момент оно недействительно.
ExitListener
defined (or at least declared) inside that header, but there could just as well be some other class, none at all, or many classes. ;
at the end of the ExitListener
class' definition is a very good guess that fits my experience with such errors. At the very least I'm sure the error means that the compiler doesn't know what ExitListener
is.ExitListener
class) you don't need to include the header at all. A simple forward declaration class ExitListener;
is sufficient enough to declare the ExitListener *mFrameListener
member. (You will need to include the full class definition in order to implement the InitialGameState
member functions that deal with ExitListener
, though. If you implement these functions in the header where InitialGameState
is defined, you will need to keep that "ExitListener.h" include.) ошибка находится в файле ExitListener.h (или в любом из файлов, которые он включает). Часто эта проблема возникает из-за отсутствия ;
в конце класса.
Если вы добавите код этого файла, я смогу вам помочь в дальнейшем.
Проблема ExitListener объявлен неправильно. Это единственное решение для VS сказать это. Убедитесь, что при компиляции класса ExitListener не было ошибки. (и чтобы вы не забыли завершающий ";")
Примечание на полях Здесь вы используете указатель на ExitListener. Вам не нужно знать размер или внутреннюю структуру ExitListener, если вы просто объявляете указатель. Предварительного объявления было бы достаточно.
Я подозреваю, что вам не хватает включения Ogre где-то в вашей цепочке включения.
Мое предположение основано на моих небольших знаниях о других ваших файлах заголовков и предупреждении VC о том, что отсутствует тип спецификатор: отсутствует спецификатор типа
.