C++;:访问类的私有成员 我仍然在头脑中寻找C++,但我尝试扩展我现有的一些代码,希望我能利用 STD::向量< /> > < /P>

C++;:访问类的私有成员 我仍然在头脑中寻找C++,但我尝试扩展我现有的一些代码,希望我能利用 STD::向量< /> > < /P>,c++,private,C++,Private,标题中声明了以下内容(为简单起见缩短): 类窗口管理器 { 私人: std::向量m_项列表; } 我的问题是如何从.cpp访问它?我想用它来创建一个Item类型的数组,但我不知道如何才能真正达到这样的程度:我可以在数组中添加一个新实例化的Item,比如说按钮 这是一个基本的问题,但我在介绍std::vector的教程中运气不太好。要添加项目,可以使用如下成员函数: class WindowManager { private: std::vector<Item *> m_i

标题中声明了以下内容(为简单起见缩短):

类窗口管理器
{
私人:
std::向量m_项列表;
}
我的问题是如何从.cpp访问它?我想用它来创建一个
Item
类型的数组,但我不知道如何才能真正达到这样的程度:我可以在数组中添加一个新实例化的
Item
,比如说
按钮


这是一个基本的问题,但我在介绍std::vector的教程中运气不太好。

要添加项目,可以使用如下成员函数:

class WindowManager
{
private:
    std::vector<Item *> m_itemlist;
public:
    void addItem(Item *newItem);
}

如有可能,请参阅,避免使用指向项目的指针向量。直接使用项目的向量

class WindowManager
{
    void addItem(Item const& item) { m_itemlist.push_back(item); }

private:
    std::vector<Item> m_itemlist;
};

int main()
{
    WindowManager wm;
    Item i;
    wm.addItem(i);
}
类窗口管理器
{
void addItem(Item const&Item){m_itemlist.push_back(Item);}
私人:
std::向量m_项列表;
};
int main()
{
窗口管理器;
项目一;
西医补充(一);
}

请具体说明您遇到的困难。您的
WindowManager类需要与向量交互的函数。它与任何其他私有成员变量一样。因此,问题首先不是关于
vector
,而是关于“如何更改私有数据成员”?我认为您将问题过于简化了。如前所述,
WindowManager
是完全无用的,因为它的
m\u itemlist
成员不可访问。只能从成员函数访问它,因为它是
private
,但没有声明成员函数。旁注:为什么要使用
std::vector
而不是
std::vector
?只是确保你没有做任何不必要的事情-通常不需要指针向量。鉴于OP询问在
向量中添加
按钮
,我认为它需要是多态的。但总的来说,你的建议是好的。
Item
可能是多态层次结构的基础…@5gon12eder-你可能是对的。OP可能正在寻找指针向量。不过,OP编写了
,我想用它来创建一个项目类型的数组
。。。嗯,有点不清楚。无论如何,这个问题现在暂时搁置,所以我就不提了。@Dennis-可能是对的。请参见上面的评论。
void WindowManager::addItem(Item *newItem)
{
    m_itemlist.push_back(newItem);
}
class WindowManager
{
    void addItem(Item const& item) { m_itemlist.push_back(item); }

private:
    std::vector<Item> m_itemlist;
};

int main()
{
    WindowManager wm;
    Item i;
    wm.addItem(i);
}