#include<iostream>
using namespace std;
template<class T1, class T2> class Point{
public:
Point(T1 x, T2 y) :m_x(x), m_y(y){}
public:
T1 getX() const { return m_x; }
void setX(T1 x){ m_x = x; }
T2 getY()const { return m_y; }
void setY(T2 y){ m_y = y; }
void display() const;
private:
T1 m_x;
T2 m_y;
};
template<class T1,class T2>
void Point<T1, T2>::display() const{
cout << "x = " << m_x << ", y = " << m_y << endl;
}
template<> class Point < char*, char* > {
public:
Point(char *x, char *y) :m_x(x), m_y(y){}
public:
char *getX() const{ return m_x; }
void setX(char *x){ m_x = x; }
char *getY() const{ return m_y; }
void setY(char *y){ m_y = y; }
void display() const;
private:
char* m_x;
char* m_y;
};
void Point<char*, char*>::display() const{
cout << "x = " << m_x << " | y = " << m_y << endl;
}
int main()
{
(new Point<int, int>(10, 20))->display();
(new Point < int, char * >(10, "东经180度"))->display();
(new Point<char*, char*>("东经180度", "北纬210度"))->display();
return 0;
}
#include<iostream>
using namespace std;
template<class T1, class T2> class Point{
public:
Point(T1 x, T2 y) :m_x(x), m_y(y){}
public:
T1 getX() const { return m_x; }
void setX(T1 x){ m_x = x; }
T2 getY()const { return m_y; }
void setY(T2 y){ m_y = y; }
void display() const;
private:
T1 m_x;
T2 m_y;
};
template<class T1,class T2>
void Point<T1, T2>::display() const{
cout << "x = " << m_x << ", y = " << m_y << endl;
}
template<typename T2> class Point < char*, T2> {
public:
Point(char *x, T2 y) :m_x(x), m_y(y){}
public:
char *getX() const{ return m_x; }
void setX(char *x){ m_x = x; }
char *getY() const{ return m_y; }
void setY(T2 y){ m_y = y; }
void display() const;
private:
char* m_x;
T2 m_y;
};
template<typename T2>
void Point<char*, T2>::display() const{
cout << "x = " <<m_x<< " & y = " << m_y << endl;
}
int main()
{
(new Point<int, int>(10, 20))->display();
(new Point < int, char * >(10, "东经180度"))->display();
(new Point<char*, char*>("东经180度", "北纬210度"))->display();
return 0;
}