아래 화면은 상기 코드에 대한 디버깅 화면이다.
p1은 실수 타입으로, p2는 정수 타입으로 찍힌걸 보니 마음에 든다.
위 소스코드는 2010 기준으로 만들었다, 2013 이상이라면 GetDistance에서 double형으로 형변환을 안해줘도 에러가 발생하지 않는다.
#include <cmath> template<typename T> class CPoint { public: T x; T y; public: CPoint( ) : x(0), y(0) { } CPoint( T _x, T _y ) : x(_x), y(_y) { } }; template<typename T1, typename T2> double GetDistance( const T1& p1, const T2& p2 ) { return std::sqrt( double( (p1.x-p2.x)*(p1.x-p2.x) + (p1.y-p2.y)*(p1.y-p2.y) ) ); } int main( ) { CPoint<double> p1( 432, 189 ); CPoint<int> p2( 38, 392 ); double dDistance = GetDistance( p1, p2 ); return 0; }
'예제 모음 > C/C++' 카테고리의 다른 글
[C언어] printf를 이용해 소수점 이하 자릿수 설정하기 (0) | 2016.02.26 |
---|---|
[C/C++] sin, cos을 이용해서 원 그리기 (2) | 2015.12.10 |
[C언어] 두 점 사이의 거리 구하기 (0) | 2015.12.02 |
[C++11] 중복없는 로또 프로그램2 (2) | 2015.11.29 |
[C++11] 중복없는 로또 프로그램 (6) | 2015.11.27 |
[C++11] 원 안에만 점 찍기 (0) | 2014.09.02 |
[C언어] rand 함수를 이용한 로또 프로그램 (1) | 2014.04.08 |