C++:访问 class 的私有成员
C++: accessing private members of the class
由于我是 C++ 的新手,我仍然在关注 C++,但我正在尝试扩展一些现有的代码,这些代码期望我使用 std::vector
.
在 header 中声明如下(为简单起见缩写):
class WindowManager
{
private:
std::vector<Item*> m_itemlist;
}
我的问题是我应该如何从 .cpp 访问它?我想用它来获得一个 Item
类型的数组,但我不明白如何真正达到可以添加新实例化的 Item
的程度,假设 button
, 到数组?
有点基本的问题,但我对涵盖 std::vector.
的教程不太满意
要添加项目,您可以使用这样的成员函数:
class WindowManager
{
private:
std::vector<Item *> m_itemlist;
public:
void addItem(Item *newItem);
}
在window_manager.cpp中:
void WindowManager::addItem(Item *newItem)
{
m_itemlist.push_back(newItem);
}
如果可能,请避免使用指向 Item 的指针向量。直接使用Item的vector
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);
}
由于我是 C++ 的新手,我仍然在关注 C++,但我正在尝试扩展一些现有的代码,这些代码期望我使用 std::vector
.
在 header 中声明如下(为简单起见缩写):
class WindowManager
{
private:
std::vector<Item*> m_itemlist;
}
我的问题是我应该如何从 .cpp 访问它?我想用它来获得一个 Item
类型的数组,但我不明白如何真正达到可以添加新实例化的 Item
的程度,假设 button
, 到数组?
有点基本的问题,但我对涵盖 std::vector.
的教程不太满意要添加项目,您可以使用这样的成员函数:
class WindowManager
{
private:
std::vector<Item *> m_itemlist;
public:
void addItem(Item *newItem);
}
在window_manager.cpp中:
void WindowManager::addItem(Item *newItem)
{
m_itemlist.push_back(newItem);
}
如果可能,请避免使用指向 Item 的指针向量。直接使用Item的vector
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);
}