具有构造函数的另一个类中的对象数组

一些人

如果我们有一个带有构造函数的类要在另一个类的构造函数中初始化,请执行以下操作:

Class A{
 A(int arg):a(arg);
 int a;
};
Class B{
 B(int arg):A_obj(arg);
 A A_obj;
}

我遇到了以下情况,

Class B{
 B(int arg1,int arg2);
 A *A_obj//Array of objects of A of size arg2;
}

除了使用serparate函数进行初始化外,使用构造函数初始值设定项还有什么方法可以实现?还可以通过其他任何优雅的方式进行处理。

谢谢!

编辑:我希望B的构造函数初始化程序中的某种循环功能。

编辑:科里的答案对此进行了整理。我想知道是否可以进一步将迭代值作为输入参数传递给A_obj数组中A的每个实例。

class A{
 A(int arg,std::string n);
 int a;
 std::string name;
}

在A_obj(arg2,A(arg1,“ Name” + str(iterator))的行上

解决方案(感谢Cory)

#include <iostream>
#include<string>
#include <vector>

class A{
public:
    A(int arg,std::string n):a(arg),name(n){};
    int a;
    std::string name;
    void sayhi(){std::cout<<"Hi from "<<name<<std::endl;}
};

class B{
public:
    B(int arg1, int arg2){
        A_obj.reserve(arg2);
        for (std::size_t i = 0; i < arg2; ++i){
            A_obj.emplace_back(arg1, "Name" + std::to_string(i));  // create new A object and add to vector
        }
    }std::vector<A> A_obj;
};

int main(){
    B B_obj(1,10);
    for(int i=0;i<10;i++){
        B_obj.A_obj[i].sayhi();
    }
    return 0;
}
科里·克莱默

我建议将您的原始数组更改为 std::vector

class B{
 B(int arg1,int arg2);
 std::vector<A> A_obj;
};

然后可以使用成员初始化列表

B::B(int arg1, int arg2) : A_obj(arg2) {}

这将arg2根据默认初始化A对象的数量确定向量的大小

如果希望每个都A使用进行初始化,arg1则可以使用另一个vector构造函数

B::B(int arg1, int arg2) : A_obj(arg2, A(arg1)) {}

要将不同的值传递给每个对象,您需要在构造函数主体中执行此操作

B::B(int arg1, int arg2)
{
    A_obj.reserve(arg2);
    for (std::size_t i = 0; i < arg2; ++i)
    {
        A_obj.emplace_back(arg1, "Name" + std::to_string(i));  // create new A object and add to vector
    }
}

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在另一个构造函数中为对象数组调用构造函数

来自分类Dev

从另一个类的构造函数将数组传递到类函数中

来自分类Dev

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

来自分类Dev

多次修改放置在另一个类的构造函数的参数中的对象

来自分类Dev

在另一个类构造函数中初始化一个类对象

来自分类Dev

如何使用一个类的构造函数作为Java中另一个类的对象的参数?

来自分类Dev

来自另一个具有数组初始化功能的构造函数的C ++构造函数调用

来自分类Dev

另一个类的移动构造函数中的移动类(没有默认构造函数)

来自分类Dev

将类的实例传递给另一个构造函数,该构造函数将其对象添加到所传递的实例拥有的列表中

来自分类Dev

如何从没有构造函数的另一个类中调用方法

来自分类Dev

C ++中带有另一个模板类作为参数的构造函数

来自分类Dev

从C ++ 17中的另一个构造函数调用具有不同参数类型的构造函数

来自分类Dev

是否可以在另一个类中调用一个类的构造函数?

来自分类Dev

同一类的另一个构造函数中的c ++调用构造函数

来自分类Dev

从同一类中的另一个构造函数访问构造函数变量

来自分类Dev

C ++将具有重载构造函数的对象添加到另一个对象

来自分类Dev

具有不可见构造函数的公共类可以由另一个包中的类扩展吗?

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

从类的构造函数中的另一个属性引用一个属性的值

来自分类Dev

具有所有默认参数的显式构造函数不能从同一类的另一个构造函数调用

来自分类Dev

删除另一个类中带有受保护析构函数的对象

来自分类Dev

不确定如何使用另一个类的对象创建带有参数的构造函数

来自分类Dev

C ++-如何在另一个类中使用私有构造函数实例化对象

来自分类Dev

在具有来自另一个文件的内部数组的函数中未定义

来自分类Dev

Scala:具有特征的类,其构造函数采用具有一组平行特征的另一个类?

来自分类Dev

Java - 将 TextField 中的值添加到另一个类的对象构造函数

来自分类Dev

构造函数中的 C++ 语法错误 - 参数是对来自另一个类的对象的引用

Related 相关文章

  1. 1

    在另一个构造函数中为对象数组调用构造函数

  2. 2

    从另一个类的构造函数将数组传递到类函数中

  3. 3

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

  4. 4

    多次修改放置在另一个类的构造函数的参数中的对象

  5. 5

    在另一个类构造函数中初始化一个类对象

  6. 6

    如何使用一个类的构造函数作为Java中另一个类的对象的参数?

  7. 7

    来自另一个具有数组初始化功能的构造函数的C ++构造函数调用

  8. 8

    另一个类的移动构造函数中的移动类(没有默认构造函数)

  9. 9

    将类的实例传递给另一个构造函数,该构造函数将其对象添加到所传递的实例拥有的列表中

  10. 10

    如何从没有构造函数的另一个类中调用方法

  11. 11

    C ++中带有另一个模板类作为参数的构造函数

  12. 12

    从C ++ 17中的另一个构造函数调用具有不同参数类型的构造函数

  13. 13

    是否可以在另一个类中调用一个类的构造函数?

  14. 14

    同一类的另一个构造函数中的c ++调用构造函数

  15. 15

    从同一类中的另一个构造函数访问构造函数变量

  16. 16

    C ++将具有重载构造函数的对象添加到另一个对象

  17. 17

    具有不可见构造函数的公共类可以由另一个包中的类扩展吗?

  18. 18

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

  19. 19

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

  20. 20

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

  21. 21

    从类的构造函数中的另一个属性引用一个属性的值

  22. 22

    具有所有默认参数的显式构造函数不能从同一类的另一个构造函数调用

  23. 23

    删除另一个类中带有受保护析构函数的对象

  24. 24

    不确定如何使用另一个类的对象创建带有参数的构造函数

  25. 25

    C ++-如何在另一个类中使用私有构造函数实例化对象

  26. 26

    在具有来自另一个文件的内部数组的函数中未定义

  27. 27

    Scala:具有特征的类,其构造函数采用具有一组平行特征的另一个类?

  28. 28

    Java - 将 TextField 中的值添加到另一个类的对象构造函数

  29. 29

    构造函数中的 C++ 语法错误 - 参数是对来自另一个类的对象的引用

热门标签

归档