Пропавшие без вести синтаксической ошибки; прежде *

Никто не ответил, что фактически MemoryStream.GetBuffer возвращает выделенный буфер, а не реальные данные в этом буфере. В этом случае он возвращает 256-байтовый буфер, в то время как он содержит только 32 байта зашифрованных данных.

6
задан sbi 9 October 2009 в 10:43
поделиться

6 ответов

Я предполагаю, что ExitListener.h прямо или косвенно включает файл заголовка InitialGameState.h. Таким образом, существует циклическая зависимость между файлом заголовка, и компилятор не может найти объявление для ExitListener. Если вам просто нужно сохранить указатель ExitListener в этом классе, тогда нет необходимости включать файл заголовка ExitListener.h. Вместо этого вы можете просто использовать предварительное объявление как class ExitListener;

EDIT : вы можете использовать предварительное объявление, как предложено выше, или удалить включение InitialGameState.h из ExitListener.h. Вам нужно включить только GameState.h (файл заголовка базового класса). Но я предпочитаю использовать предварительные объявления в файле заголовка и включать файл заголовка только в cpp.

23
ответ дан 8 December 2019 в 02:53
поделиться

По-видимому, проблема в определении ExitListener, на тот момент оно недействительно.

2
ответ дан 8 December 2019 в 02:53
поделиться
  1. The errors don't refer to the last line, but to the line before the last line. (Please be precise. If people know the compiler well which emits this error message, their guesses might be a lot better if they know the exact line it is given for.)
  2. "ExitListener.h" is not a class, but a header. (This isn't Java.) One would assume that there is a class 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.
  3. Without this header, it's impossible to say exactly what's wrong, although either circular dependencies between these two headers or a missing ; 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.
  4. As others have said, you do not need a class definition in order to declare a pointer to that class, so (assuming that "ExitListener.h" defines the 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.)
5
ответ дан 8 December 2019 в 02:53
поделиться

ошибка находится в файле ExitListener.h (или в любом из файлов, которые он включает). Часто эта проблема возникает из-за отсутствия ; в конце класса.

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

1
ответ дан 8 December 2019 в 02:53
поделиться

Проблема ExitListener объявлен неправильно. Это единственное решение для VS сказать это. Убедитесь, что при компиляции класса ExitListener не было ошибки. (и чтобы вы не забыли завершающий ";")

Примечание на полях Здесь вы используете указатель на ExitListener. Вам не нужно знать размер или внутреннюю структуру ExitListener, если вы просто объявляете указатель. Предварительного объявления было бы достаточно.

1
ответ дан 8 December 2019 в 02:53
поделиться

Я подозреваю, что вам не хватает включения Ogre где-то в вашей цепочке включения.

Мое предположение основано на моих небольших знаниях о других ваших файлах заголовков и предупреждении VC о том, что отсутствует тип спецификатор: отсутствует спецификатор типа .

0
ответ дан 8 December 2019 в 02:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: