这是将一个类的数组传递给另一个类中的方法的正确方法吗

Is this the right way of passing an array of a class to a method in another class

本文关键字:方法 另一个 数组 一个      更新时间:2023-10-16

我需要将gameEntity的数组传递给碰撞类中的方法

Class Game{
   public: GameEntity *positions[48];
           void DoAction();
           Collision *col;
  }

在Game.cpp 中

  void GameEntity::DoAction(){
      col = new Collision(positions[0]);
   }

在构造函数中接受gamentity数组的类

 class Collision{
    public:
      Collision(GameEntity * positions)
   }

冲突中.cpp

  Collision::Collision(GameEntity  *springBalls)
   {
          for(int i = 0 ; i< 49; i++)
         {
           cout<<springBalls[0]<<endl
         }
  }

此声明,

GameEntity *positions[48];

是指向CCD_ 1的48个指针的数组。

我通过标准的main签名来记住这一点。

接受可以是的正式论点

GameEntity** a

或者可以是例如

GameEntity* (&a)[48]

其中后者通过引用接收阵列,但出于这个原因,需要具有硬接线的阵列大小。


一般来说,在任何实际的地方,都更喜欢标准库抽象,如std::arraystd::vector

使用std::vector

问题1:

col = new Collision(positions[0]);

传入指针,而不是取消引用到第一个元素

col = new Collision(positions);

问题2:

您分配了48个GameEntity:s(索引为0-47)。但是你试图访问[48]

for(int i = 0 ; i< 49; i++)

问题3:

GameEntity *positions[48];

是一个指针数组。因此,冲突::冲突应该采用GameEntity**类型的参数

您可以对Collision对象执行以下操作:

碰撞::碰撞(GameEntity**springBalls){}

但是,你的弹球必须是一个由48个GameEntity对象组成的数组。

相关文章: