gpt4 book ai didi

C++从类中调用重载运算符

转载 作者:搜寻专家 更新时间:2023-10-31 00:10:55 25 4
gpt4 key购买 nike

我有一个继承自另一个类的类,我希望调用 [index] 来访问某些已分配存储的第 index 个元素。

这是一个最小的例子:

class A
{
protected:
double *mem;

double operator[](const size_t index)
{
return mem[index];
}
}

class B : public A
{
void function()
{
double var = this->operator[](0);
}
}

所以在这里我通过调用 this->operator[](0) 来绕过这个问题,这有点困惑。

考虑到我无法从派生类访问该变量,这是访问 mem 元素的正确方法吗?还是有替代方法?

编辑:我认为我符合 C++11 可能很重要,所以不能调用 mem[0]

编辑,模板类

如下所述,我看到的编译器错误没有出现在这个例子中,因为这里没有模板。

重现编译器错误:

template <typename T>
class A
{
protected:
double *mem;

double operator[](const size_t index)
{
return mem[index];
}
}

template <typename T>
class B : public A<T>
{
void function()
{
double var = this->operator[](0);
}
}

可能的解决方案

return this->operator[](0);
return (*this)[0];
return (this->mem)[0];
return *((this->mem)+0);
return (*this).mem[0];
return *((*this).mem+0);

...我认为所有这些都符合我的期望。还有更多建议吗?

更好的解决方案:

return A::mem[0];

正是我想要的!

最佳答案

你可以说 (*this)[0]

不过,在任何版本的 C++ 中,都没有什么能阻止您使用 mem[0]

关于C++从类中调用重载运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35817544/

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