初始化变量后在另一个类中构造对象

bcf

我有类似以下内容:

QuadMesh.h:

#include "StructureIpsim.h"  // this is a struct

class QuadMesh {

public:
QuadMesh(StructureIpsim s) {//do stuff}

};

SEMPotential.h:

#include "QuadMesh.h"
#include "SpecialFuncs.h"

class SEMPotential {

public:
StructureIpsim SI;
QuadMesh mesh;
SEMPotential( //args);

};

SEMPotential::SEMPotential( //args) {
// init structure in here, need to call functions from SpecialFuncs.h to do so
// How to construct the QuadMesh object mesh?  Can't put in initialization list.
}

正如你所看到的QuadMesh物体发生在一个StructureIpsimsruct,但是这个结构必须在构造函数中使用多项功能进行初始化SEMPotential传递给之前QuadMesh的构造。解决此问题的标准方法是什么?

本·沃格特

CAN使用初始化列表。使用帮助程序函数,该函数可能应该是私有的静态成员函数,该函数接受相关参数,进行计算并返回一个QuadMesh对象。使用初始化列表从该帮助程序的返回值初始化成员。

class SEMPotential
{
    static QuadMesh mesh_creator( /* args */ );
public:
    QuadMesh mesh;
    SEMPotential(/* args */) : mesh(mesh_creator(args)) {}
};

QuadMesh SEMPotential::mesh_creator( /*args*/ )
{
    StructureIpsum s;
    // init structure in here, calling functions from SpecialFuncs.h to do so
    return QuadMesh(s);
}

正如Matt McNabb在评论中指出的那样,该辅助函数可以是的构造函数StructureIpsum但是我提出了一个不需要修改StructureIpsumQuadMesh类定义的解决方案

如果要保留StructureIpsum实例,请使用helper方法技巧对其进行初始化,然后仅使用它来初始化网格:

SEMPotential(/* args */) : SI(ipsum_creator(args)), mesh(SI) {}

保证成员的初始化顺序(这是它们在类中出现的顺序,初始化列表中的顺序无效)。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

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

来自分类Dev

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

来自分类Dev

在另一个函数/构造函数中初始化后,使变量为只读[C ++]

来自分类Dev

在另一个类构造中初始化它时找不到类

来自分类Dev

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

来自分类Dev

在另一个类对象中初始化一个对象(在对该构造函数执行一些操作之后)。

来自分类Dev

在另一个类对象中初始化一个对象(在对该构造函数执行一些操作之后)。

来自分类Dev

在Rails中初始化另一个对象后创建相关对象

来自分类Dev

Java:在初始化块中初始化对象时从另一个类调用对象的方法

来自分类Dev

另一个类中的参数化对象初始化

来自分类Dev

另一个类中的参数化对象初始化

来自分类Dev

我们可以在另一个类的构造函数的帮助下初始化对象吗?

来自分类Dev

我们可以在另一个类的构造函数的帮助下初始化对象吗?

来自分类Dev

使用另一个构造函数的初始化来初始化构造函数中的属性

来自分类Dev

无法初始化向量来保存使用其构造函数初始化的另一个类

来自分类Dev

如何初始化作为另一个类的成员变量的基类对象?

来自分类Dev

将Ruby对象的实例变量作为映射传递给另一个类的初始化程序

来自分类Dev

在另一个类中初始化一个指针

来自分类Dev

如果一个类包含另一个类的对象,并且所有类都通过构造函数初始化,那么初始化如何工作?

来自分类Dev

Java中另一个类中看不见的初始化对象

来自分类Dev

另一个类的c ++私有对象:初始化并使用它调用该类中的函数

来自分类Dev

另一个类中的C ++类初始化,出现错误

来自分类Dev

在另一个类中初始化改造类

来自分类Dev

保存对象的变量,然后可以使用这些变量初始化另一个对象

来自分类Dev

保存对象的变量,然后可以使用这些变量初始化另一个对象

来自分类Dev

休眠在另一个会话中初始化对象

来自分类Dev

在另一个方法中初始化对象时发生NullPointerException

来自分类Dev

如何从Vue.js中的另一个变量初始化一个变量

来自分类Dev

如何从Vue.js中的另一个变量初始化一个变量

Related 相关文章

  1. 1

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

  2. 2

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

  3. 3

    在另一个函数/构造函数中初始化后,使变量为只读[C ++]

  4. 4

    在另一个类构造中初始化它时找不到类

  5. 5

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

  6. 6

    在另一个类对象中初始化一个对象(在对该构造函数执行一些操作之后)。

  7. 7

    在另一个类对象中初始化一个对象(在对该构造函数执行一些操作之后)。

  8. 8

    在Rails中初始化另一个对象后创建相关对象

  9. 9

    Java:在初始化块中初始化对象时从另一个类调用对象的方法

  10. 10

    另一个类中的参数化对象初始化

  11. 11

    另一个类中的参数化对象初始化

  12. 12

    我们可以在另一个类的构造函数的帮助下初始化对象吗?

  13. 13

    我们可以在另一个类的构造函数的帮助下初始化对象吗?

  14. 14

    使用另一个构造函数的初始化来初始化构造函数中的属性

  15. 15

    无法初始化向量来保存使用其构造函数初始化的另一个类

  16. 16

    如何初始化作为另一个类的成员变量的基类对象?

  17. 17

    将Ruby对象的实例变量作为映射传递给另一个类的初始化程序

  18. 18

    在另一个类中初始化一个指针

  19. 19

    如果一个类包含另一个类的对象,并且所有类都通过构造函数初始化,那么初始化如何工作?

  20. 20

    Java中另一个类中看不见的初始化对象

  21. 21

    另一个类的c ++私有对象:初始化并使用它调用该类中的函数

  22. 22

    另一个类中的C ++类初始化,出现错误

  23. 23

    在另一个类中初始化改造类

  24. 24

    保存对象的变量,然后可以使用这些变量初始化另一个对象

  25. 25

    保存对象的变量,然后可以使用这些变量初始化另一个对象

  26. 26

    休眠在另一个会话中初始化对象

  27. 27

    在另一个方法中初始化对象时发生NullPointerException

  28. 28

    如何从Vue.js中的另一个变量初始化一个变量

  29. 29

    如何从Vue.js中的另一个变量初始化一个变量

热门标签

归档