gpt4 book ai didi

C++ 将字符串转换为类型名

转载 作者:太空狗 更新时间:2023-10-29 21:11:16 34 4
gpt4 key购买 nike

所以我找到了很多文章和帖子说没有办法将 typename 转换为 string 但我还没有找到相反的。我有一个具有特殊功能的模板:

template <typename T>
void foo(T sth) {}

template <>
void foo<int>(int sth) {}
...

我正在读取这样构造的文件:

int 20
double 12.492
string word

有没有办法根据文件的内容调用正确的foo()特化?

最佳答案

是的,但它需要手动代码,并且您知道将出现在文件中的所有类型。这是因为模板是编译时构造的,它们不能在运行时实例化。

如果愿意,您始终可以使用预处理器或其他技巧来尝试减少样板文件。

void callFoo(std::string type, std::any arg) {
if (type == "int")
foo<int>(std::any_cast<int>(arg));
else if (type == "double")
foo<double>(std::any_cast<double>(arg));
else if (type == "string")
foo<std::string>(std::any_cast<std::string>(arg));
}

当然,这需要您传入正确的类型(没有隐式转换!)。我看不出有什么办法可以避免这种情况。

关于C++ 将字符串转换为类型名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51127040/

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