地图的范围和价值存储问题
Scope and value storage problems with maps
我有一个类,它包含一个映射。。
#pragma once
#include "Member.h"
class MapDetails
{
public:
typedef map<int, Member*> MyMap;
typedef pair<int,Member*> MyPair;
MyMap myMap;
MapDetails(void);
MapDetails(const MapDetails& obj);
public:
~MapDetails(void);
//MyMap returnMap();
};
在其他各种类中,我正在插入、删除和更新其中的值。为了访问myMap
,我尝试将此类继承到其他类中。但是一个类的更改不会反映到其他类。可能是因为正在创建myMap
的新副本。我该如何阻止这种情况?使用static关键字会导致链接器错误。我不想使用带有extern的全局变量。我是C++的新手:(请帮助我
在设计一个类之前,首先要决定它是一个值对象(一个具有封装数据和更改方法的类),还是在以后通过多态性(静态或动态)等方式扩展行为。
在上面的例子中,看起来您正试图像使用值对象一样使用这个类,因为您只想要类似映射的行为,并且您希望这个类的单个对象可以被多个其他类访问。有多种方法/模式可以做到这一点,使地图对象静态(singletons模式)只是一种方法。它不太受欢迎,但环境应该决定它的用途,而不是偏见。正如评论中提到的,如果您提供更多的代码示例,我们将能够进一步帮助您。
至于你在静态声明中遇到的链接器错误,可能是因为你没有在类定义之外为静态成员变量提供定义,这是新手常见的错误。
使用静态成员很容易解决链接错误,只需在相应的.cpp
文件或相同的翻译单元中放置一个定义即可。
class MapDetails
{
...
static MyMap myMap;
...
};
并在.cpp
文件中放入:
MapDetails::MyMap MapDetails::myMap;
相关文章:
- 添加存储在向量中的大整数的函数出现问题
- 读取文件并将其存储在unordered_map中时出现问题
- 有效地将大数存储为 2 的幂用于路径问题
- 存储另一个函数返回的布尔数组时遇到问题
- 图问题:找出两个节点是否在每个节点的O(1)时间和O(2)存储中共享同一分支
- 我在将 10^18 存储为浮点数时遇到问题
- 我正在编写一个代码来将 int 数组存储在文件中,然后用 c++ 检索它,但是检索第一项是假值,我该如何解决这个问题?
- 流的奇怪问题.不能存储具有特定值的成员变量的对象
- 从存储库读取单个文件时出现问题
- C 问题存储在Hashtable中
- 问题在字符串指针中存储单词
- 将 10 个整数存储到数组C++中时出现问题
- 关于从第二个存储值_ty2秒复制std :: Map Iterator的数据的问题
- 在SD卡上读取和存储二进制GPS数据方面的问题
- 我在使用 cin.getline() 从用户那里获取 3 个字符串并使用指针数组来存储它们时遇到问题
- 在我的代码中执行存储过程时出现问题
- 鸟类调查中的项目在代码中遇到问题.如何像数据库系统一样存储数据
- C++ Mongocxx驱动程序存储的JavaScript问题
- 地图的范围和价值存储问题
- 巨大的图形存储问题