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

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

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 Как сделать так, чтобы другие классы обращались к функциям из моего основного класса?

2

Решение

Вы не можете сделать это на 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);
}
1

Другие решения

В C ++ main это не класс и не часть класса, поэтому this не имеет смысла в его контексте.

1

С ++ не похож на Java. Вам не нужно иметь все ваши методы (или функции, как они вызываются в c ++) внутри класса.

main это функция, а не класс. здесь нет this

Теперь у вас могут быть глобальные переменные или вы можете поместить переменные / объекты в кучу, чтобы другие классы могли их использовать, но в общем случае в c # фактически нет класса Main.

0
По вопросам рекламы [email protected]