Struct를 만들고(complex<double> 행렬 2x2 관련 구조체)
해당 구조체를 곱했을때에 대한 계산을 위하여 연산자 * 오버로딩.
첫시도 -
CustomStruct A;
CustomStruct B;
CustomStruct C;
CustomStruct& operator*(const CustomStruct& _b, const CustomStruct& _t)
{
complex<double> _rA = (_b.a * _t.a) + (_b.b * _t.c);
complex<double> _rB = (_b.a * _t.b) + (_b.b * _t.d);
complex<double> _rC = (_b.c * _t.a) + (_b.d * _t.c);
complex<double> _rD = (_b.c * _t.b) + (_b.d * _t.d);
return CustomStruct(_rA, _rB, _rC, _rD);
}
A*B는 정상 출력이 되나, A*B*C는 되지 않는다.
변경 -
(구조체 내에서 inLine으로 처리)
inline CustomStruct& operator*(const CustomStruct& _t)
{
a = (a * _t.a) + (b * _t.c);
b = (a * _t.b) + (b * _t.d);
c = (c * _t.a) + (d * _t.c);
d = (c * _t.b) + (d * _t.d);
return *this;
}
'Programming > C & C++' 카테고리의 다른 글
Visual Studio 2017 - E1696 cannot open source file "###" (0) | 2020.02.06 |
---|---|
Visual Studio 2005 TaskList 토큰 추가 적용이 안 될 때 (0) | 2019.09.26 |
텍스트에서 입력 받은 단어의 개수 찾기 (0) | 2019.07.31 |
Visual Studio - An exception has been encountered this may be caused by an extension. (0) | 2019.04.21 |
문자열 수식을 입력받아 계산하기 (0) | 2019.02.27 |