push_back在对象的2维向量中
Push_back in 2 dimension vector of objects
我在名为" factory circuit"的"工厂"类中有一个名为"电路"(电路)的对象向量的向量。
vector< vector< Elemento*> >
" Elemento"是三个派生类别的基类,称为" complateenza,induttanza,concuttanza"(电阻,电感,电导)。这三个类是RCL组件。(在此程序中,我必须计算I和Z。)
在内部矢量的每个"位置"中,我只能按照相同的组件来推动_back。然后我将它们视为平行组件。组件串联的外部矢量说明位置。因此,例如,在[0]的位置,我可以具有一种电阻,在[1]两个电感中,在[2]四个电容中...
,如果我尝试复制该示例,我可以在main.cpp中进行此操作:
vector< vector<Elemento*> > circuito(3);
circuito[0].push_back(new Resistenza());
circuito[2].push_back(new Conduttanza());
circuito[2].push_back(new Conduttanza()); --->these "new" functions are three constructorS of the derived classes
circuito[2].push_back(new Conduttanza());
circuito[2].push_back(new Conduttanza());
circuito[1].push_back(new Induttanza());
circuito[1].push_back(new Induttanza());
circuito[0][0]->print();
circuito[0][1]->print(); //member function or R,C,L
circuito[0][2]->print();
这是正确的,但是当我运行时它会崩溃。我的目标是在工厂中创建三个成员功能,这些功能创建R,C,L,但在此之前,我必须了解如何使用向量....
我尝试在名为" crearesistenza"的工厂中创建一个成员功能,但也崩溃了:
工厂:
include ....etc....
FactoryCircuiti::FactoryCircuiti(){
vector< vector<Elemento*> > circuito(1);
}
FactoryCircuiti::~FactoryCircuiti(){
}
void FactoryCircuiti::CreaResistenza(double a) {circuito[0].push_back( new Resistenza(a) );}
//这最后一行是有罪的!当我使用此成员函数时,它会导致程序的崩溃!
相反,如果我放入构造函数"
circuito[0].push_back(new Induttanza());
circuito[1].push_back(new Resistenza());
circuito[0][0]=(new Conduttanza());
circuito[0][0]->print();"
当我创建类...我做了很多尝试,以理解问题在哪里,但是现在我不知道该怎么办:(感谢您的回复!
您的示例:
vector< vector<Elemento*> > circuito(3);
circuito[0].push_back(new Resistenza());
circuito[2].push_back(new Conduttanza());
circuito[2].push_back(new Conduttanza()); --->these "new" functions are three constructorS of the derived classes
circuito[2].push_back(new Conduttanza());
circuito[2].push_back(new Conduttanza());
circuito[1].push_back(new Induttanza());
circuito[1].push_back(new Induttanza());
circuito[0][0]->print();
circuito[0][1]->print(); //member function or R,C,L
circuito[0][2]->print();
它创建了一个3个向量的向量,我将以这种方式表示数据:
circuito {
[0] : {
[0] Resistenza
}
[1] : {
[0] Induttanza
[1] Induttanza
}
[2] : {
[0] Conduttanza
[1] Conduttanza
[2] Conduttanza
[3] Conduttanza
}
}
然后,您要打印:
circuito[0][0]->print();
好吧,它存在
circuito[0][1]->print();
问题,不存在,指针为null:分段故障
您必须先初始化数据或在尝试调用它们的方法之前检查它们是否不是null。
相关文章:
- 我在二维向量中是否正确分配了内存
- 在 C++ 中解释多维向量的语句时感到困惑
- 在二维向量或数组中可以存储的最大元素数是多少?
- 如何将整数字符串转换为整数的二维向量?
- C++ N 维向量的模板化别名
- 如何解释多维向量?
- 当表示为对象的一维向量时,有效地旋转 NxM 矩阵 (C++)
- 在多维向量中的特定位置添加一个值
- 如何从多维向量中提取数据
- 如何使用擦除和迭代器来删除二维向量中的项目
- 如何在二维向量c++中迭代col
- 如何在C++中将.csv文件的元素存储到二维向量中?
- std::将三维数组复制到三维向量中
- std::vector::clear()ing 二维向量线程的内部向量安全吗?
- 在我为我的二维向量提供第一个值后控制台关闭
- 以C++输出二维向量
- 多维向量
- 分配不同类型的多维向量
- C++用一个新类初始化二维向量;默认值更改
- n维向量的递归可变参数模板函数