gpt4 book ai didi

c++ - 如何为这个结构实现 [] 运算符?

转载 作者:太空狗 更新时间:2023-10-29 19:50:04 24 4
gpt4 key购买 nike

我想要下面这样的东西:

template <class T>
struct Container{
public:
//[] operator
private:
T containment;
};

容器应该是一个数组,具有如下任意数量的维度:

Container<int[20][4]> obj;
Container<int[5][2][6]> obj1;
//etc...

我想实现 [] 运算符,以便可以进行以下分配:

obj[2][3]=6;
obj1[1][1][3]=3;
//etc...

但经过几次尝试后,我发现自己卡住了,这怎么可能?

最佳答案

您的订阅运营商应返回一个代理对象,该对象本身会实现订阅运营商。

如果我们分解对 obj[2][3] = 6 的调用,这将产生:

  • obj[2] --> 代理对象
  • obj[2][6] --> 引用 int

通过查看 obj1,您会发现除了最后一个 [] 之外的所有内容都应该返回一个代理对象。

这通常是通过使用带有“深度”参数的模板化代理来降低的,并将其专门化为合适的深度。在您的情况下,您的代理将有一个指向它可能产生的第一个元素的 T 指针,以及维度列表(作为模板参数)。

但这并不是微不足道的,因为您似乎希望获得任意数量的参数。取决于您的目标编译器是否支持可变参数模板,您可能确实会遇到一些麻烦。

关于c++ - 如何为这个结构实现 [] 运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4248049/

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