操作员过载但不可行
Operator overload but not viable
我重载了类中的TextureImage类运算符=,但编译器一直说没有可行的运算符"="。
TextureImage& operator=(TextureImage i){
this->x = i.getX();
this->y = i.getY();
this->n = i.getN();
this->data = i.getData();
return *this;
}
如果我向函数添加const
,编译器说我不能在 const 成员函数中分配给非静态数据成员。
那么如何重载运算符=这里
您当然不希望将赋值运算符重载为成员函数const
。如果坚持,请将所有成员变量mutable
。
规范形式看起来像
TextureImage& operator=(const TextureImage& i) {
x = i.x;
y = i.y;
n = i.n;
data = i.data;
return *this;
}
请注意,您不需要在那里使用getter。
如果那里没有其他事情要做,则无需实现自己的赋值运算符,因为编译器已经自动生成或按需生成该代码
TextureImage& operator=(const TextureImage& i) = default;
虽然我怀疑data
需要一些更特殊的处理,因为它听起来是一种数组或指针成员变量。
在这种情况下,我建议您使用 std::array
或 std::vector
作为数据成员并坚持使用默认实现。
相关文章:
- 候选构造函数(隐式复制构造函数)不可行:第一个参数需要 l 值
- 为什么当 cplex presolve 处于打开状态时 MIP 不可行?
- 候选函数不可行:没有从 std::vector<derived> 到 std::vector <base>的已知转换
- C++默认复制构造函数不可行
- C++ - 候选函数不可行:没有从"结构"到"结构(&)"的已知转换
- 错误:静态断言失败:std ::线程参数必须在转换为rvalues后不可行
- 为什么只有一行告诉我操作员=不可行?但是其他人很好
- Or-Tools:CPP中琐碎的问题是不可行的,但在Python中起作用
- 操作员过载但不可行
- 不能<<操作员过载
- MPI_Op_create:候选功能不可行.自定义结构指针不能解释为空指针
- C++ 候选构造函数不可行:没有已知的转换
- 错误:候选函数不可行:'this'参数具有类型 'const' 但方法未标记为 const
- C++集合方法:函数'setCost'不可行:'this'参数的类型'const value_type'
- JUCE - 成员函数不可行:'this'参数具有常量类型
- 推力:不支持操作员'*'
- 不带操作员的对象的数组初始化,复制构造函数或默认构造函数和运行时参数
- 使用单词变化C 不是操作员时的奇怪错误
- 长度树的不可行的代码,但不起作用
- 错误:候选构造函数(隐式移动构造函数)不可行:没有已知的转换