【发布时间】:2018-05-08 16:28:44
【问题描述】:
我有一个问题,我不明白为什么会这样。简而言之,我想创建一个单例来读取配置文件,其中每个属性都将存储在地图中。
我将我的配置类 (.h) 定义为
class Configuration {
public:
static Configuration* getInstance(std::string configFile);
private:
static std::map<std::string, std::string> properties;
static bool instanceFlag;
static Configuration *instance;
Configuration();
Configuration(std::string configFile);
~Configuration();
};
在实现类上我有以下内容:
#include <iostream>
#include <fstream>
#include "Configuration.h"
std::map<std::string, std::string> Configuration::properties {};
bool Configuration::instanceFlag = false;
Configuration *Configuration::instance = NULL;
问题是,我的变量属性是配置类型而不是地图。如果将键和值替换为 int,则属性将变为映射。看起来很奇怪。
我在头文件中包含了字符串。
没有异常或错误。我的意思是,编译运行良好而不是错误。但是,我的地图总是空的。在eclipse上调试我注意到变量属性的类型是Configuration而不是map。
当我将键值类型从string更改为int时,对象属性的类型是map。
你以前见过吗?我在这里错过了什么?
谢谢 毛罗
【问题讨论】:
-
您能详细说明一下吗?您是否收到任何构建错误或警告?您能否编辑您的问题以包含它们(完整、完整、未修改并复制粘贴为文本)?
-
顺便说一句,你确实在某处包含
<string>? -
不是您的问题,但可以省去一些麻烦并使用静态本地。并且不要将指针用于不能为空的东西,使用指针。并重新考虑这应该是单例,还是全局。
-
@NirFriedman “不要使用指针,使用指针”?
-
显然是指引用,一个奇怪的大脑放屁我也很奇怪。