c++ - 将主类传递给其他类,以便它们可以访问其功能

标签 c++ class program-entry-point

因此,我需要我的对象能够使用主类中的函数,因此在创建它们时,我希望它们通过参数获取它。

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

最佳答案

在 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++ - 将主类传递给其他类,以便它们可以访问其功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13348002/

相关文章:

java - 在不同的类中返回更新后的值时遇到问题

java - 将字符串添加到另一个类的数组列表中

c++ - 具有多个项目的 visual studio 解决方案无法编译

c++ - 为什么 VS2015 中模板相关的嵌套类型名称不需要 typename 关键字?

c++ - 检查实例是否为空或者其中有东西

c++ - 为什么 std::map 没有 find/lower_bound 重载,std::list 没有 sort 重载?

java - 在另一个构造函数中调用构造函数(并从 cons.1 获取修改后的变量)

c# - 混合模式 C++/CLI 崩溃 : heap corruption in atexit (static destructor registration)

我可以将 argv 从 main 传递到 execv 吗?

c++ - 减少库的安装