具有自定义对象的C ++数组

小雅各

搜索谷歌和stackoverflow 2天后,我还没有发现任何东西

我使用Java大约一年了,因此决定在C ++上创建一个游戏练习

在Java中,这应该可以工作,但是在C ++中,这让我大吃一惊。

我有这个代码

Item* inventory = new Item[24];

它是存放物品的阵列(库存)

当我动态分配数组时,其所有位置都为空?如果没有,我可以使它们全部为空吗?

这就是在第一个空位置添加项目(拾取项目)的代码

void Inventory::addItem(Item it){
    if(isFull()){
        cout << "Full inventory" << endl;
    }else{
        for(int i = 0; i<length; i++){
            if(inventory[i] == nullptr){ // need this to work somehow
                  inventory[i] = it;
            }
        }
    }
}

它必须是数组而不是向量,因为它具有固定的大小

鞋子

当我动态分配数组时,其所有位置都为空?如果没有,我可以使它们全部为空吗?

C ++中没有像Java中那样存在null对象的东西。您可以nullptr改用一个指针。在您的情况下,对象是默认构造的,因此不为null。

它必须是数组而不是向量,因为它具有固定的大小

除非绝对必要,否则您通常不希望动态分配。使用的std::array,如果你真的想要一个固定大小的数组。

我建议将std::array结合使用与std::unique_ptr

std::array<std::unique_ptr<Item>, 24> arr;

默认情况下,所有的std::unique_ptr旨意是nullptr当您需要分配对象时,您可以执行以下操作:

arr[i] = std::unique_ptr<Item>(new Item(...));

您甚至可以为智能指针创建别名:

using item_ptr = std::unique_ptr<Item>;

这将帮助您将代码重写为:

std::array<item_ptr, 24> arr;
arr[0] = item_ptr(new Item(...));

或者,您也可以使用boost::optional(或std::optional从C ++ 14开始):

std::array<std::optional<Item>> arr;

您将能够使用以下命令检查特定i元素是否为“ null”(在Java中):

if (arr[i])
    // not null

并且您可以通过以下方式分配值:

arr[i] = Item(...);

与检索*arr[i]arr[i]->member_function(...);arr[i]->member_object

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

具有自定义索引的对象数组

来自分类Dev

流星:具有对象数组的自定义AutoForm

来自分类Dev

具有自定义索引的数组

来自分类Dev

检查自定义对象数组是否包含具有特定日期的对象

来自分类Dev

具有元素的自定义构造函数的对象的数组/向量

来自分类Dev

创建自定义对象数组的数组

来自分类Dev

具有自定义颜色数组的plot_trisurface

来自分类Dev

PHP排序数组具有自定义顺序

来自分类Dev

如何在Simulink中将具有数组的结构赋予自定义C代码函数?

来自分类Dev

导出带有自定义对象的数组

来自分类Dev

带有自定义对象Swift的数组

来自分类Dev

TS:自定义对象数组的定义

来自分类Dev

在C ++中增加自定义对象数组的大小

来自分类Dev

具有自定义类的iOS数组到具有NSString的数组

来自分类Dev

C# 计算自定义类数组中的自定义类对象

来自分类Dev

具有部分相似对象(即ab)的两个数组之间的差异(基于自定义属性)

来自分类Dev

NSKeyedArchiver自定义对象数组

来自分类Dev

对象数组的自定义排序顺序

来自分类Dev

加入自定义对象数组

来自分类Dev

使用数组的自定义对象

来自分类Dev

对象数组的自定义排序顺序

来自分类Dev

从对象数组创建自定义 JSON

来自分类Dev

Powershell 数组和自定义对象

来自分类Dev

实现泛型的自定义类的数组不允许自定义类具有子类的泛型

来自分类Dev

如何编写一个函数,该函数创建一定长度的对象数组?对象具有自定义生成的数据

来自分类Dev

从自定义对象数组中获取属性数组

来自分类Dev

如何快速找到自定义对象数组中某个键的所有对象的总和

来自分类Dev

从自定义数组列表中获取具有相同标志的所有项目的列表

来自分类Dev

有没有办法使用 numpy 数组创建具有自定义值的数组

Related 相关文章

  1. 1

    具有自定义索引的对象数组

  2. 2

    流星:具有对象数组的自定义AutoForm

  3. 3

    具有自定义索引的数组

  4. 4

    检查自定义对象数组是否包含具有特定日期的对象

  5. 5

    具有元素的自定义构造函数的对象的数组/向量

  6. 6

    创建自定义对象数组的数组

  7. 7

    具有自定义颜色数组的plot_trisurface

  8. 8

    PHP排序数组具有自定义顺序

  9. 9

    如何在Simulink中将具有数组的结构赋予自定义C代码函数?

  10. 10

    导出带有自定义对象的数组

  11. 11

    带有自定义对象Swift的数组

  12. 12

    TS:自定义对象数组的定义

  13. 13

    在C ++中增加自定义对象数组的大小

  14. 14

    具有自定义类的iOS数组到具有NSString的数组

  15. 15

    C# 计算自定义类数组中的自定义类对象

  16. 16

    具有部分相似对象(即ab)的两个数组之间的差异(基于自定义属性)

  17. 17

    NSKeyedArchiver自定义对象数组

  18. 18

    对象数组的自定义排序顺序

  19. 19

    加入自定义对象数组

  20. 20

    使用数组的自定义对象

  21. 21

    对象数组的自定义排序顺序

  22. 22

    从对象数组创建自定义 JSON

  23. 23

    Powershell 数组和自定义对象

  24. 24

    实现泛型的自定义类的数组不允许自定义类具有子类的泛型

  25. 25

    如何编写一个函数,该函数创建一定长度的对象数组?对象具有自定义生成的数据

  26. 26

    从自定义对象数组中获取属性数组

  27. 27

    如何快速找到自定义对象数组中某个键的所有对象的总和

  28. 28

    从自定义数组列表中获取具有相同标志的所有项目的列表

  29. 29

    有没有办法使用 numpy 数组创建具有自定义值的数组

热门标签

归档