gpt4 book ai didi

c++ - 以字符串列表作为模板参数的模板静态类,如何在C++ 11上制作

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

很难解释清楚,很抱歉标题不清楚。我需要模板类,它将字符串列表 (char* ?) 作为模板参数。此类必须具有静态方法 static string get(int i);,它将返回作为模板静态字符串列表传递的第 n 个字符串。如何编码?

目标是使子类具有分配的字符串列表。像这样:

class Letters : public Base<"A", "B", "C"> {};
...
std::cout << Letters::get(1);

最佳答案

正如 Dragos Pop 在评论中提到的,it is impossible to use a string literal as a template argument .

可能的解决方法:

  • 如果您只需要字母,请考虑使用char:

    Base<'A', 'B', 'C'>
  • 考虑传递可调用对象类型,而不是字符串文字。可调用对象将返回您需要的字符串文字。

    struct String0
    {
    constexpr auto operator()() const noexcept
    {
    return "some string 0";
    }
    };

    struct String1
    {
    constexpr auto operator()() const noexcept
    {
    return "some string 1";
    }
    };

    class Words : public Base<String0, String1> { /* ... */ };

关于c++ - 以字符串列表作为模板参数的模板静态类,如何在C++ 11上制作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41674598/

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