所以我需要我的对象能够使用主类中的函数,所以当它们被创建时我希望它们通过它们的参数来获取它。
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);
}
我把“this”放在主要类中,这就是我在java中的方式,但我不确定如何在这里做。我试过“* this”和“this”,但我得到的只是一个错误: 在非成员函数中使用'this'无效。 搜索错误让我没有任何工作,因为我对c ++的类系统不太了解。
这两个第一个参数是针对该位置的。 Init命令参数设置它们是否是盟友。
我希望Unit类能够访问:
int getClosestHostileX(int ask_x,int ask_y,bool team) {
return 55;
}
以后应该有更多的代码,我只是想让他们回来。
我正在使用Code :: Blocks IDE和GNU GCC编译器。
TL; DR如何让我的其他类从我的主类访问函数?
答案 0 :(得分:1)
在C ++中,main
不是类,也不是类的一部分,因此this
在其上下文中没有意义。
答案 1 :(得分:1)
你也不能用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);
}
答案 2 :(得分:0)
c ++与java不同。您不需要在类中拥有所有方法(或在c ++中调用它们的函数)。
main
是一个函数,而不是一个类。没有this
现在你可以拥有全局变量,或者你可以将变量/对象放在堆上,以便其他类能够使用,但一般来说,c#实际上没有Main类。