需要以下代码的帮助,对什么地方很困惑。
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 ++中的模板参数。单个字符可以,因为它们是整数类型。