如何将对象的动态数组传递给另一个类的参数化构造函数?

v

我不明白原始指针相当不错,不幸的是我没有允许使用<vector>S,所以我无法弄清楚如何写出具有另一个类对象作为其财产的数组类的参数的构造函数。

class A{
    ...
};

class B{
    int size;
    A *arr;
    ...
    B(int, const A *); // am I declaring this right?
}

...

B::B(int size_, const A *arr_) { // this is the constructor I'm trying to write
    size = size_;
    if (arr != nullptr) delete[] arr;
    arr = new A[size];
    memcpy(arr, arr_, sizeof(A) * size);
}

如何在不浪费内存的情况下传递此参数?上面的代码无法正常工作,因此我想听听一些提示。尽管似乎我的问题已经回答了,但我没有设法用Google解决方案,在这种情况下,我深表歉意。

我不允许使用任何安全的std::东西。我需要弄清楚如何使用C中的手动内存分配来使其工作。糟糕,我的意思是C ++,感谢您指出这一点。

因此,到目前为止,这是对我有用的构造函数:

B::B(int size_, const A *arr_) {
    size = size_;
    arr = new A[size_];
    for (int i = 0; i < size; i++) arr[i] = arr_[i];
}

感谢大家的时间!

山姆·瓦尔沙夫奇克(Sam Varshavchik)

在您的构造函数中:

if (arr != nullptr) delete[] arr;

arr是目前尚未初始化的类成员。它是一个垃圾指针,可能是以外的东西nullptr,这将尝试到delete垃圾指针。显然,这不会走得太远。

只需删除它。您的构造函数设置了sizearr,这就是它要做的全部。有没有存在的价值sizearr担心:你要构造一个新的对象。

memcpy(arr, arr_, sizeof(A) * size);

仅当A 是POD时才有效相反,请使用std::copy(),这将在所有情况下都做正确的事情。如果您std::copy()除了不能使用之外还不能使用std::vector,请编写一个for循环来手动复制此数据。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将编写的对象传递给另一个类的构造函数?

来自分类Dev

如果有对象被创建为另一个类的数据成员,如何将值传递给参数化的构造函数?

来自分类Dev

Lua-如何将对象的函数作为参数传递给另一个函数

来自分类Dev

Lua-如何将对象的函数作为参数传递给另一个函数

来自分类Dev

jQuery如何将对象传递给另一个函数

来自分类Dev

Java-试图使用在另一个类中传递给另一个构造函数的参数来初始化对象?

来自分类Dev

C ++:如何将一个对象传递给另一个对象构造函数?

来自分类Dev

如何将参数数组传递给JavaScript中的另一个函数?

来自分类Dev

如何初始化一个类并将对象传递给Android中的构造函数?

来自分类Dev

将模板类的对象传递给另一个类的构造函数

来自分类Dev

如何将对象参数与另一个对象参数(数组内部)进行比较

来自分类Dev

如何将对象传递给另一个模型的回调?

来自分类Dev

如何在构造函数中将对象数组作为参数传递,然后将传递的数组复制到另一个数组(仍在构造函数中)

来自分类Dev

如何将可变函数参数作为参数传递给另一个函数?

来自分类Dev

如何将参数传递给作为另一个函数参数的函数

来自分类Dev

通过另一个类将对象传递给一个类

来自分类Dev

如何将对象传递给方法然后传递给另一个方法

来自分类Dev

Python MYSQL tupple问题。如何将参数传递给另一个类中执行查询的函数

来自分类Dev

如何将模板化类实例作为模板参数传递给另一个模板?

来自分类Dev

如何将tanh函数作为参数传递给另一个函数?

来自分类Dev

如何将函数作为参数传递给另一个函数?

来自分类Dev

如何将泛型函数作为参数传递给另一个函数?

来自分类Dev

如何将命名参数传递给另一个函数需要的函数?

来自分类Dev

使用构造函数将一个类传递给另一个类

来自分类Dev

PHP将一个类传递给另一个类构造函数

来自分类Dev

如何将Js函数数组传递给另一个Js函数?

来自分类Dev

用参数初始化另一个类构造函数中的对象

来自分类Dev

如何将模型的genericgenerator中的参数传递给另一个类(IdGenerator)

来自分类Dev

如何将&rest参数传递给emacs lisp中的另一个函数?

Related 相关文章

  1. 1

    如何将编写的对象传递给另一个类的构造函数?

  2. 2

    如果有对象被创建为另一个类的数据成员,如何将值传递给参数化的构造函数?

  3. 3

    Lua-如何将对象的函数作为参数传递给另一个函数

  4. 4

    Lua-如何将对象的函数作为参数传递给另一个函数

  5. 5

    jQuery如何将对象传递给另一个函数

  6. 6

    Java-试图使用在另一个类中传递给另一个构造函数的参数来初始化对象?

  7. 7

    C ++:如何将一个对象传递给另一个对象构造函数?

  8. 8

    如何将参数数组传递给JavaScript中的另一个函数?

  9. 9

    如何初始化一个类并将对象传递给Android中的构造函数?

  10. 10

    将模板类的对象传递给另一个类的构造函数

  11. 11

    如何将对象参数与另一个对象参数(数组内部)进行比较

  12. 12

    如何将对象传递给另一个模型的回调?

  13. 13

    如何在构造函数中将对象数组作为参数传递,然后将传递的数组复制到另一个数组(仍在构造函数中)

  14. 14

    如何将可变函数参数作为参数传递给另一个函数?

  15. 15

    如何将参数传递给作为另一个函数参数的函数

  16. 16

    通过另一个类将对象传递给一个类

  17. 17

    如何将对象传递给方法然后传递给另一个方法

  18. 18

    Python MYSQL tupple问题。如何将参数传递给另一个类中执行查询的函数

  19. 19

    如何将模板化类实例作为模板参数传递给另一个模板?

  20. 20

    如何将tanh函数作为参数传递给另一个函数?

  21. 21

    如何将函数作为参数传递给另一个函数?

  22. 22

    如何将泛型函数作为参数传递给另一个函数?

  23. 23

    如何将命名参数传递给另一个函数需要的函数?

  24. 24

    使用构造函数将一个类传递给另一个类

  25. 25

    PHP将一个类传递给另一个类构造函数

  26. 26

    如何将Js函数数组传递给另一个Js函数?

  27. 27

    用参数初始化另一个类构造函数中的对象

  28. 28

    如何将模型的genericgenerator中的参数传递给另一个类(IdGenerator)

  29. 29

    如何将&rest参数传递给emacs lisp中的另一个函数?

热门标签

归档