【问题标题】:Initialize a static map [duplicate]初始化静态地图[重复]
【发布时间】:2019-05-19 06:01:12
【问题描述】:

我想在不实例化HelperClass 的情况下调用readFromMap。

所以我想检查一下我是否可以在(有些人认为)类加载时调用readIntoMapFromDataStore?

所以地图总是在调用readFromMap之前初始化?

初始化静态地图

class HelperClass {

static map<string, string> cache;

static string readFromMap(string key) {
return cache.at(key);
}

static void readIntoMapFromDataStore() {
//read contents into cache from datastore
}
}

调用readFromMap之前如何初始化?

【问题讨论】:

  • 您的代码缺少一些重要的东西。课后的分号。静态成员的定义(将决定使用哪个构造函数,显示的代码不会调用默认构造函数)。

标签: c++ static


【解决方案1】:

地图的填充应该由返回地图对象的函数完成,NRVO 将消除临时对象。您可以通过在静态成员的定义中使用初始化来连接它:

std::map<std::string, std::string> HelperClass::cache{HelperClass::readIntoMapFromDataStore()};

【讨论】:

    猜你喜欢
    • 2012-11-07
    • 2013-05-26
    • 2016-08-31
    • 2010-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多