gpt4 book ai didi

c++ - 在头文件上为类声明 = 和 [] 运算符, "must be a nonstatic member function"错误

转载 作者:行者123 更新时间:2023-11-30 01:44:47 25 4
gpt4 key购买 nike

我制作了一个 Block 类和一个 struct coords,在实现运算符时我遇到了错误:

'coords operator[](const Block&, const size_t&)' must be a nonstatic member function
'bool operator=(Block&, const Block&)' must be a nonstatic member function

我在 Block 类的头文件中声明了这两个,如下所示:

class Block
{
friend Block operator+(const Block&, const coords&);
friend Block operator+(const Block&, const Block&);
friend coords operator[](const Block&, const std::size_t&);
friend void operator+=(Block&, const coords&);
friend void operator+=(Block&, const Block&);
friend bool operator=(Block&, const Block&);
//...
};

只有运算符 [] 和 = 会出现此错误,我不确定原因。我试图更改返回值和参数类型,但它一直遇到同样的问题。这两个运营商很特别吗?还是我的声明有误?我一直在寻找解决这个问题的方法,但找不到合适的答案。

感谢您的回复。

最佳答案

并非所有运算符都可以使用非成员函数重载。 []= 就是两个这样的运算符。它们只能作为成员函数重载。

参见 http://en.cppreference.com/w/cpp/language/operators了解更多详情。

关于c++ - 在头文件上为类声明 = 和 [] 运算符, "must be a nonstatic member function"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35468680/

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