매트릭스 클래스가 있습니다. 작은 행렬의 정적 할당을위한 유형, 행 및 열이있는 템플릿입니다. 문제는 operator * 및 operator * =의 과부하입니다. 이 경우 동일한 유형, 행이 내 열과 같고 열 수와 같은 다른 개체에 대해 작업을 부여해야합니다. 지금이 코드를 작성했는데 작동하지만 다른 유형 T1 대신 동일한 유형 T를 사용하도록 강제 할 수 있는지 궁금합니다. 행과 열도 마찬가지입니다.
template<typename T, int R, int C>
class Matrix {
private:
//some data.....
public:
//some methods.....
template <typename T1, int R1, int C1> <----here I'd like to use T as type
Matrix<T,R,C1> operator*(const Matrix<T,R1,C1>& rhs);
template <typename T1, int R1, int C1>
Matrix<T,R,C1>& operator*=(const Matrix<T,R1,C1>& rhs);
}
의 경우 operator *
템플릿 매개 변수가 함수 인수와 일치 할 필요가 없으므로 그냥 생략 할 수 있습니다. 또한 두 번째 행렬의 행 수가 첫 번째 행렬의 열 수와 일치한다는 제한이 있으므로 실제로는 하나의 템플릿 매개 변수 만 필요합니다.
template<typename T, int R, int C>
class Matrix {
private:
//some data.....
public:
//some methods.....
template <int C1>
Matrix<T,R,C1> operator*(const Matrix<T,C,C1>& rhs) const;
};
operator *=
정사각형 행렬로만 작업 할 수 있으므로주의해야합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다