gpt4 book ai didi

c++ - 模板类中 operator [] 的可变参数模板重载

转载 作者:搜寻专家 更新时间:2023-10-31 01:06:31 26 4
gpt4 key购买 nike

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

这里是相关代码的摘录:

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:我正在尝试遵循 this answer 顶部建议的可转换为类型检查的编译时.

最佳答案

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

正确的语法应该是:

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

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

关于c++ - 模板类中 operator [] 的可变参数模板重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20641775/

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