需要以下代码的帮助,对什么地方很困惑。

template<const char* (&ArrayC)[]>
        class TypeDescriptionBase
        {
        public:
            static const auto getType(int index)
            {
                return getArrayIndex(ArrayC, index);
            }
            template <typename Func>
            static void forEachType(Func&& f)
            {
                for (const auto& type : ArrayC)
                    f(type);
            }
            static auto findTypeIndex(const CString& strType)
            {
                auto it = std::find(std::begin(ArrayC), std::end(ArrayC), strType);
                return static_cast<int>(it == std::end(ArrayC) ? 0 : std::distance(std::begin(ArrayC), it));
            }
        };

        using advancedTypes = TypeDescriptionBase<{ "TypeA", "TpyeB" , "TpyeC", "TpyeD", "TpyeE", "TpyeF", "TpyeG", "TpyeH", "TpyeI", "TpyeJ"}>;


我收到错误-“期望表达式”,其最后一行位于const char *数组开头。我正在使用VS2017进行开发。

最佳答案

您正在尝试使用字符串数组作为模板参数。 C ++不支持此功能。即使单个字符串也不能成为C ++中的模板参数。单个字符可以,因为它们是整数类型。

10-06 05:15