Возьмем, например, следующий код:
#include <iostream>
#include <string>
int main()
{
print("Hello!");
}
void print(std::string s) {
std::cout << s << std::endl;
}
При попытке создать это, я получаю следующее:
program.cpp: In function ‘int main()’:
program.cpp:6:16: error: ‘print’ was not declared in this scope
Что имеет смысл.
Итак, почему я могу провести аналогичную концепцию в структуре, но не закричать на нее?
struct Snake {
...
Snake() {
...
addBlock(Block(...));
}
void addBlock(Block block) {
...
}
void update() {
...
}
} snake1;
Не только я не получаю предупреждения, но программа действительно компилируется! Без ошибок! Это просто природа структур? Что здесь происходит? Очевидно, что addBlock(Block)
был вызван до того, как был объявлен метод.