gpt4 book ai didi

C++ 强制命名空间合规性

转载 作者:行者123 更新时间:2023-11-30 00:36:18 25 4
gpt4 key购买 nike

假设你有一个命名空间

approvedParams {
std::string s1 = "my_string_input_1";
std::string s2 = "my_string_input_2";
}

approvedParams的范围之外存在一个函数 myfun(std::string parm1)

是否可以约束 myfun签名只接受 std::string 类型的字段来自 approvedParams namespace ?

即:

myfun("my_string_input_1")不会编译。

myfun(approvedParams::s1)将编译。


我正在考虑使用 enum 来实现.但是我最终想使用 approvedParams::s1s2当我解析键值配置文件时。 enum必须是整数类型。我对使用 map<int,std::string> 添加另一个不必要的层不感兴趣将枚举整数与 std::string 连接起来.

最佳答案

s1s2type 不携带有关它们在其中声明的 namespace 的信息。

不过,您可以更轻松地包装自定义类型。

namespace approvedParams
{
struct keytype { std::string val; };
keytype s1 = { "my_string_input_1" };
keytype s2 = { "my_string_input_2" };
}

void approvedParams( approvedParams::keytype );

关于C++ 强制命名空间合规性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16225456/

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