我目前正在为电子邮件地址的顶级域名做检查。为了检查,我将它与作为文本文件的列表进行比较。我想将列表导入静态地图容器。但是,当我尝试实例化它时,它表示无法在当前范围中定义它。那是为什么?
这是我的头文件:
class TldPart {
public:
static void LoadTlds();
private:
static map<string,bool> Tld;
}
以下是cpp中的实现:
void TldPart::LoadTlds()
{
map<string,bool> Tld;
...
}
它告诉我无法在LoadTlds函数中定义ValidTld。
答案 0 :(得分:1)
类的静态成员存在于对象之外。您应该在类之外定义和初始化静态成员。
这里我们定义并初始化一个静态类成员:
标题文件:强>
#pragma once
#include <map>
#include <string>
class TldPart {
public:
static void LoadTlds();
private:
static std::map<std::string, bool> tld;
};
您的cpp文件:
#include "external.h"
std::map<std::string,bool> TldPart::tld;
void TldPart::LoadTlds()
{
tld.insert(std::make_pair("XX", true));
}
在课程结束时不要忘记分号。
编辑:您可以为const整数类型的静态成员提供类内初始值设定项,或者为constexprs提供静态成员并具有文字类型。