首页 > 解决方案 > C++ 运算符“=”重载 - 获取 lhs 上向量​​中的所有值等于 rhs 上的双精度值

问题描述

我正在尝试重载 C++ 中的“=”-运算符,但无法使其正常工作。我的想法是将向量中的所有元素更改为等于双精度值。

我尝试了几种方法,但无法使其正常工作(出现不同的错误)。希望有人能给我一些指导。下面是我现在卡住的地方。

MyClass &operator=(const MyClass &lhs){
    for (int i = 0; i < lhs.vect.size(); i++){
        lhs.vect[i] = this;
    }
    return lhs;
};

int main() {
MyClassName = 3; // Should change all element in the vector to 3
};

标签: c++operator-overloading

解决方案


这是正确的代码:

class MyClass {
public:
    std::vector<double> vect;
    MyClass& operator=(double v) {
        for (int i = 0; i < vect.size(); i++) {
            vect[i] = v;
        }
        return *this;
    };
};

赋值运算符声明为 lhs -> this 类的成员,赋值为 rhs


推荐阅读