从私人std :: Map中获取价值
Get value from private std::map
我从C 开始,我正在尝试通过构图扩展STD :: MAP类。我想使用此类CardPackage
将ID和指针的私有地图与我的EntityCards
一起使用,并实现三种方法AddCard
,GetCard
和RemoveCard
,它将访问专用MAP m
。
问题是我无法使用m
方法(find
和end
),因为我收到以下错误消息:
expression must have a pointer type
我知道m
必须是通过箭头符号(或点)访问的指针,但我不知道要适应代码以尊重我的要求。
标题:
#include <EntityCard.h>
class CardPackage
{
public:
CardPackage();
~CardPackage();
void AddCard(EntityCard* card);
EntityCard* GetCard(int id);
bool RemoveCard(int id);
private:
map<int, EntityCard*> m;
};
来源:
#include "CardPackage.h"
CardPackage::CardPackage()
{
}
CardPackage::~CardPackage()
{
}
void CardPackage::AddCard(EntityCard *card)
{
m[card->ID] = card;
}
EntityCard* CardPackage::GetCard(int id)
{
if (id < 1) { return nullptr; }
if(m->find(id) == m->end())
{
return (m[id]);
}
else
{
return nullptr;
}
}
bool CardPackage::RemoveCard(int id)
{
//TODO
return false;
}
if(m->find(id) == m->end())
应该是:
if(m.find(id) != m.end())
m
不是指针,因此您需要.
,而不是->
。您还以错误的方式进行了测试。
实现稍好的是:
const auto it = m.find(id);
if (it != m.end())
return it->second;
else
return nullptr;
区别在于,这仅在地图中进行一次查找,而您的代码则两个。
相关文章:
- 如何获取两个 std::map 的公钥?
- 从std::map值中获取密钥的有效方法
- 我尝试使用MAP容器来映射资源,现在RESOURCEFILE正在获取所有信息.为什么
- 如何在 std::map 中从 std::vector of std::p air 中获取输入?
- C++ std::map:获取特定偏移量的密钥
- 从 Map 中获取具有给定值的元素
- 有没有办法通过 LEMON 图形库中的 Map 值获取节点?
- 从私人std :: Map中获取价值
- 将 map
转换为 void* 并返回并获取密钥 - 根据值的概率从 Map 获取随机键
- 获取传递给模板函数的 std::map 的值类型
- C++ std::map 如何在每次调用类对象时获取新的 map 对象
- 从 std::map 中的向量获取数据
- 从具有自定义类型的 C++ 中的 std::map 中获取值
- 获取std::map元素的有效方法是在容器中删除一个元素
- 如何使用std::map从模板中获取数据类型
- 如何根据std::map的值获取它们的前n个键
- 如何用std::map获取双向迭代器的索引
- 如何在libxml2中获取属性并保存在c++的stl map中
- 如何通过键从map中获取值