Поэтому мне нужно, чтобы мои объекты могли использовать функции, которые находятся в основном классе, поэтому, когда они создаются, я хочу, чтобы они получили его через свои параметры.
int main(int argc, char* args[])
{
Unit units[3]={{5,5,this},{8,8,this},{12,12,this}};
units[0].init(true);
for (int i=1;i<sizeof(units) / sizeof(units[0]);i++) {
units[i].init(false);
}
Где я положил «это», это должен быть основной класс, это то, как я бы сделал это в Java, но я не уверен, как это сделать здесь. Я пробовал «* это» и «это», но все, что я получаю, это ошибка:
Неправильное использование «this» в функции, не являющейся членом.
Поиск ошибки не дал мне ничего, с чем я мог работать, так как я довольно ничего не знаю о системах классов c ++.
Два первых параметра для местоположения. Параметр команды Init устанавливает, являются ли они союзниками или нет.
Я хочу, чтобы классы модуля могли иметь доступ:
int getClosestHostileX(int ask_x,int ask_y,bool team) {
return 55;
}
Здесь должно быть больше кода, я просто пытаюсь заставить их вернуться.
Я использую Code :: Blocks IDE и компилятор GNU GCC.
TL; DR Как сделать так, чтобы другие классы обращались к функциям из моего основного класса?
Вы не можете сделать это на Java, либо. В Java точка входа является статическим методом и не имеет ассоциированного экземпляра объекта.
Решение то же самое — создать экземпляр вашего типа.
int main(int argc, char** argv)
{
MainClass main_object; // creates an instance
Unit units[3]={{5,5,&main_object},{8,8,&main_object},{12,12,&main_object}};
units[0].init(true);
for (int i=1;i<sizeof(units) / sizeof(units[0]);i++) {
units[i].init(false);
}
В C ++ main
это не класс и не часть класса, поэтому this
не имеет смысла в его контексте.
С ++ не похож на Java. Вам не нужно иметь все ваши методы (или функции, как они вызываются в c ++) внутри класса.
main
это функция, а не класс. здесь нет this
Теперь у вас могут быть глобальные переменные или вы можете поместить переменные / объекты в кучу, чтобы другие классы могли их использовать, но в общем случае в c # фактически нет класса Main.