I am trying to make a Matrix class that has overloaded operators for +, =, and *. I am stuck on overloading + and =.
Code:
//assignment operator
Matrix &Matrix::operator=(Matrix &whatever) {
	if(getRows() != whatever.getRows() || getCols() != whatever.getCols()) {
		cout<<"The matrices are not the same size!"<<endl;	//if they are the same size
		return 0;
	}
	else {	//else if they are not the same size
		for(int r=0;r<getRows();r++) 
			for(int c=0;c<getCols();c++) 
				this->getTerms()[r][c] = whatever.getTerms()[r][c];	//set the term
	}	//end else
	return *this;
}	//END OPERATOR=
The problem here is that the compiler won't let me return 0. If the matrices are not the same size, I want the function (or whole program) to end there. How can I end the function?

Code:
Matrix Matrix::operator+(Matrix &additive) {	
	if( (getRows() != additive.getRows()) || (getCols() != additive.getCols()) ) 	//if they are not the same size
		cout<<"The matrices cannot be added because they are not the same size!"<<endl;
	else {
		Matrix sum(getRows(), getCols(), 'S');
		for(int r=0;r<getRows();r++) 
			for(int c=0;c<getCols();c++) 
				sum.getTerms()[r][c] = getTerms()[r][c] + additive.getTerms()[r][c];
		return sum;
	}	//end else
}	//END OPERATOR+
Here there is the same problem in the if statement as operator=. But also, I thought I should not return a reference a because 1) a new matrix needs to be made and 2) I would be returning a reference to a local variable. But whenever I try to use the operator, the program stops working. How can I make this work? Any help is appreciated.