2

所以我需要我的对象能够使用主类中的函数,所以当它们被创建时,我希望它们通过它们的参数来获取它。

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 如何让我的其他类从我的主类访问函数?

4

3 回答 3

1

在 C++ 中,main不是类,也不是类的一部分,因此this在其上下文中没有意义。

于 2012-11-12T17:02:12.590 回答
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);
}
于 2012-11-12T17:05:17.870 回答
0

c++ 不像 java。您不需要在一个类中包含所有方法(或在 c++ 中调用的函数)。

main是一个函数,而不是一个类。没有this

现在您可以拥有全局变量,或者您可以将变量/对象放在堆上,以便其他类能够使用,但一般来说,c# 实际上并没有 Main 类。

于 2012-11-12T17:04:16.053 回答