从不同的类访问vector-Object

时间:2012-07-18 15:06:52

标签: c++ class object vector

我用指针创建了一个向量,我在一个名为

的方法中从Modul派生的DigOut类中创建了新的对象
BOOL Cbeckhoff_frontendDlg::OnInitDialog()
{
//...
std::vector<Modul*> arrDigOut;
arrDigOut.push_back(new DigOut(IDC_CHECK1, this,"GVL.DigOut1",pAddr));
//...
for(iNumDO = 0;iNumDO<1;iNumDO++) arrDigOut[iNumDO]->InitCheck(this);
//...
}

如何从不同的方法访问矢量,如:

void Cbeckhoff_frontendDlg::OnBnClickedButton3()
{
for(iNumDO = 0;iNumDO<1;iNumDO++) arrDigOut[iNumDO]->SetID();
}

我考虑使用公共指针或setter和getter,但我不能像这样创建成员变量:

std::vector<Modul*> *   parrDigOut;

在抱怨的情况下,未宣布Modul。

3 个答案:

答案 0 :(得分:0)

如果我理解正确,只需将其公开并在其前添加此行:

class Modul;

答案 1 :(得分:0)

您的示例给出了您在功能范围内声明vector的印象。它的生命周期在函数调用结束时结束(并且所有内存都被泄漏)。将其存储为类成员,并将成员函数beginend转发到begin的{​​{1}}和end成员函数。可能将它们包裹在vector中以隐藏它们是指针的事实。

dereference_iterator

答案 2 :(得分:0)

您可以按照描述定义成员变量。 在类声明之上只提供一个前向声明,

class Modul;

这是为了让编译器知道这样的类将在某个地方定义。

成员变量不需要是公共的,因为它是从同一个类中的另一个函数访问的。

只需将该成员声明为:

std::vector<Modul*>   parrDigOut; //No need of pointers

但是,您可以考虑使用智能指针来确保在父类超出范围时将其删除