저는 독자적으로 Matrix 클래스를 만들었습니다. 하지만 과부하 + 연산자 흥미로운 문제가 있습니다. 프로그램이 무한 루프처럼흥미로운 C++ 연산자 오버로딩 문제
Matrix Matrix::operator+ (Matrix& operand)
{
if(row_size == operand.row_size && col_size == operand.col_size)
{
Matrix temp(row_size, col_size);
for(int i = 0; i < col_size; i ++)
{
for(int j = 0; j < row_size; j ++)
{
temp[i][j] = data_list[i][j] + operand.data_list[i][j];
}
}
return temp;
}
else
throw Error::Matrix_error(0);
}
내가 주요 기능에
matrix + matrix2;
을 수행 할 때, 그것은 보인다. 그래서, 방금 디버깅을하고 코드가 return temp;
부분에 멈추는 것을 알았습니다. operator +의 반환 유형이 Matrix
이므로이 함수가 temp
을 반환 할 수없는 이유는 알 수 없습니다.
또한이 코드는 RELEASE 모드 (Visual Studio 2010)로 컴파일 할 때 완전히 작동합니다. 그러나 DEBUG 모드로 컴파일 할 때는 작동하지 않습니다.
'매트릭스'의 copy-ctor (또는 할당)은 어떻게 생겼습니까? – Nim
''return temp;' '에서 코드 **가 멈춘다는 것은 무엇을 의미합니까? 그게 충돌한다는 뜻이야? –
행렬에 대한 공간을 동적으로 할당하고 행렬에 대한 포인터를 리턴하십시오. – SpeedBirdNine