繁体   English   中英

模板化类中运算符[]的可变参数化模板重载

[英]variadic templated overload of operator [] in templated class

我正在尝试重载运算符[]。 以下代码无法编译,我怀疑我只是在犯语法错误,但是我需要帮助来了解我在做什么以及为什么。

以下是相关代码的摘录:

template <typename T>
class MultiDimArray{
public:
  template <typename ...I>
  T& operator[](const size_t firstIndex,const size_t ...I);
  //...
}

template <typename T> //class's template parameter(s)
template <typename ...I> //function's template parameter(s)
T& MultiDimArray<T>::operator[](const size_t firstIndex,const size_t ...I){
  //...
}

注意1:我正在尝试遵循此答案顶部建议的可转换为类型检查的编译时。

operator[]只能接受一个参数,最简单的解决方案是重载operator()并通过()而不是[]来访问成员。

正确的语法应为:

    template <class T>
    template <class ... I>
    T& MultiDimArray<T>::operator()(I ... i)
    {
    }

您还使用了类型列表I ,就好像它们是参数名称而不是类型名称(在我的示例中已固定)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM