在 C++ 中重载赋值运算符和头文件

overloading assignment operator and header file in c++

我想在 C++ 中为我的对象 class 添加一个重载的赋值运算符,但是当我这样做时

Cabinet& Cabinet::operator=( const Cabinet& right ) {
    if(&right != this){

        for (int i = 0; i < rows; i++)
        {
            for (int j = 0; j < columns; j++)
            {
                this->chemicals[i][j] = right.chemicals[i][j];
            }
            
        }
    }
    return *this;
    
}

并带有这样的头文件

using namespace std;
#include <stdlib.h>
#include <string>
#include <iostream>
#include "Chemical.h"

class Cabinet{
private:
    int rows;
    int id_cabinet;
    int columns;
    Chemical*** chemicals;
    string alphabet [9];
public:   
    Cabinet(int id = 0, int rows = 0, int columns = 0);
    ~Cabinet();
    int getRow();
    int getColumn();
    int plusCount();

};

编译时出现编译错误:

Cabinet.cpp:146:19: error: definition of implicitly declared copy assignment operator

您需要在头文件中声明该函数,以便稍后定义它。

using namespace std;
#include <stdlib.h>
#include <string>
#include <iostream>
#include "Chemical.h"

class Cabinet{
private:
    int rows;
    int id_cabinet;
    int columns;
    Chemical*** chemicals;
    string alphabet [9];
public:   
    Cabinet(int id = 0, int rows = 0, int columns = 0);
    Cabinet& operator=( const Cabinet& right );
    ~Cabinet();
    int getRow();
    int getColumn();
    int plusCount();

};