@Doclassif0

No match for 'operator=' c++ ошибка?

Ошибка на c=a-b;
Проблема с типами походу.
[Error] no match for 'operator=' (operand types are 'massiv' and 'massiv')
Не могу понять что он от меня хочет) Как исправить, подскажите добрые люди?

#include <stdio.h>
#include <windows.h>
#include <conio.h>
#include <iostream>
#pragma hdrstop

using namespace std;

class massiv
{	
private:
	int mas[5];
	int size=5;
public:
	massiv() 
	{
		for(int i=0;i<size;i++)
			mas[i]=0;
	}
	massiv(int len) 
	{
		if (len<1 || len>10) size=5;
			else size=len;	
		for(int i=0;i<size;i++)
			mas[i]=0;
	}
	massiv(massiv & w) 
	{
		size=w.size;
		for(int i=0;i<size;i++)
			mas[i]=w.mas[i];
	}
	~massiv()
	{
		
	}
	
	void vvod()
	{
		cout<<"vvedite massiv"<<endl;
		for(int i=0; i<size; i++)
		{
			cout<<i+1<<"= ";
			cin>>mas[i];
		}
	
	} 
	void print()
	{
		for(int i=0; i<size;i++){
			cout<<mas[i]<<" ";
		}
		cout << endl;
	}
	
	massiv operator-(massiv &w)
	{
		int temp;
		massiv c;
		if (size>w.size)
			temp=size;
		else
			temp=w.size;
			c.size=temp;
		for(int i=0;i<temp;i++)
		{
			if(i<size && i<w.size) 
			{
				c.mas[i]=mas[i]-w.mas[i];
			}
	
			if(i<size && i>=w.size) 
			{
				c.mas[i]=mas[i];
			}
	
			if(i>=size && i<w.size) 
			{
				c.mas[i]=-w.mas[i];
			}
		}
		return c;
	}
	
	massiv operator=(massiv &w)
	{
		for(int i=0;i<size;i++)
			mas[i]=w.mas[i];
		return *this;
	}
};

int main()
{
	massiv a,b,c; 
	a.vvod();
	b.vvod();
	cout<<endl;
	a.print();
	b.print();
	cout<<endl;
	c=a-b;<
	a.print();
	cout<<"-"<<endl;
	b.print();
	cout<<"="<<endl;
	c.print();
	return 0;
}
  • Вопрос задан
  • 3704 просмотра
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
massiv operator=(massiv &w)

должно быть
massiv& operator=(const massiv &w)
const в параметрах -- важен.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@res2001
Developer, ex-admin
Оператор присваивания должен возвращать ссылку на самого себя. У вас возвращается копия объекта.
Ответ написан
Комментировать
@DjTolib
const
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы