成员不能在当前范围内定义

时间:2013-03-07 03:59:02

标签: c++

我目前正在为电子邮件地址的顶级域名做检查。为了检查,我将它与作为文本文件的列表进行比较。我想将列表导入静态地图容器。但是,当我尝试实例化它时,它表示无法在当前范围中定义它。那是为什么?

这是我的头文件:

    class TldPart {
    public:
        static void LoadTlds();
    private:
        static map<string,bool> Tld;
    }

以下是cpp中的实现:

    void TldPart::LoadTlds()
    {
        map<string,bool> Tld;
        ...
    }

它告诉我无法在LoadTlds函数中定义ValidTld。

1 个答案:

答案 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提供静态成员并具有文字类型。