gpt4 book ai didi

c++ - 无法在当前范围内定义成员

转载 作者:太空宇宙 更新时间:2023-11-04 11:58:07 24 4
gpt4 key购买 nike

我目前正在检查电子邮件地址的顶级域。为了检查,我将它与文本文件列表进行比较。我想将列表导入静态 map 容器。但是,当我尝试实例化它时,它说它不能在当前范围内定义。这是为什么?

这是我的一些头文件:

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

这是cpp中的实现:

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

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

最佳答案

类的静态成员存在于对象之外。您应该在类之外定义和初始化静态成员。

这里我们定义并初始化了一个静态类成员:

头文件:

#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));
}

并且不要忘记在类(class)结束时使用分号。

编辑:您可以为 const 整数类型的静态成员或为 constexpr 且具有文字类型的静态成员提供类内初始化器。

关于c++ - 无法在当前范围内定义成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15262799/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com