그래서 나는 다음과 같은 연산자 과부하를 갖고 만든 일반적인 Matrix 클래스가 있습니다.C++ 연산자 과부하 및 상속
class Matrix2 : public Matrix
{
};
나는 행렬 2 내가 내용의 컴파일러 오류 얻을 함께 개체를 두 곱하려고 할 때 :
'형 행렬 2의 왼쪽 피연산자를 취 찾을 수 없습니다 연산자가없는을 (또는 접근 변환 없음) '
왜 그런가요? 상속으로 연산자 오버로드를 올바르게 구현할 수있는 방법은 무엇입니까?
는 편집 :
으로 내 문제는 부분적으로 있기 때문에 "가장 성가신 구문 분석"이었다 지적했다. 이제 제 문제는 연산자 오버로드와 상속과 엄격하게 관련이 있다고 생각합니다.
2 개의 Matrix 객체를 곱하면 좋지만 2 개의 Matrix2 객체를 함께 곱할 수는 없습니다.
Matrix2 i;
Matrix2 m;
Matrix result = m * i;
오류 메시지가 :
error C2678: binary '*' : no operator found which takes a left-hand operand of type 'Matrix2' (or there is no acceptable conversion).
이것은 단지 추측이지만 과부하 선언 전에 public 수정자를 추가 할 수 있습니까 –
연산자 오버로드가 내 Matrix 클래스의 public 섹션에 있습니다. – Bob
모든 경우에있어, 사용자가 수행하는 것과 동일한 오류를 다른 사용자가 경험할 수있게하는 최소한의 완전한 예제가 유용합니다. – PlasmaHH