저에게 다소 어려운 점을 묻고 싶습니다. 나는 캘린더 타입 프로그램을 만들어야하지만, 오버로드 된 '+ ='연산자를 사용해야합니다.오버로드 된 연산자를 'new'객체와 결합합니다.
는 그래서 이렇게 가고 : 내가 사용 오브젝트 할 때마다
template<typename T1,typename T2,typename T3> //int,int,int
class T_sort_data{
T1 p1;
T2 p2;
T3 p3;
public:
T_sort_data(){
cout << "\n\t Constructed at [" << this << "]\n";};
/ friend ostream& operator<<(ostream& os,const T_sort_data& obj) // get function
{
os << "\nDay : " << obj.p1 << " \n";
os << "Month : " << obj.p2 << " \n";
os << "Year : " << obj.p3 << " \n";
return os;
}*/
void set_date(){
int dd,mm,yy;
cout << "\n\n\tPlease input the day, the month and the year : \n\n";
cin >> dd >> mm >> yy;
p1 = dd;
p2 = mm;
p3 = yy;
}
// validator here, which works ...
T_sort_data<int,int,int>& operator+=(const T_sort_data<int,int,int>& second)
{
p1+=second.p1;
return *this;
}
friend istream& operator>>(istream& is, T_sort_data& obj) // set function
{
is >> obj.p1;
is >> obj.p2;
is >> obj.p3;
return is;
}
~T_sort_data(){
cout << "\n\t Deconstructed [" << this << "]\n";};
};
int main(){
T_sort_data<int,int,int> * a = new T_sort_data<int,int,int> ;
bool more = true;
string answ;
a->set_date();
//cin >> a; (this doesn't work)
//validator goes here
//a += a; (this, again, doesn't work)
delete a;
return 0;
}
"T_sort_data을;" 이러한 작업은 정상적으로 작동하지만 "T_sort_data * a = new T_sort_data;"를 사용할 때마다 똥이 부딪치게됩니다.
아무도 도와 줄 수 있습니까?
왜 원시 포인터를 사용하고 있습니까? C++ 코드에는 컨테이너의 백엔드를 구현하는 경우를 제외하고는 원시 포인터가 없어야합니다. C++ 변수 수명은 RAII를 기반으로합니다. 객체 인스턴스를 공유하려면 스마트 포인터 나 참조를 사용하고 원시 포인터는 사용하지 마십시오. 원시 포인터는 잠재적 인 버그, 메모리 누출 및 읽을 수없는 API 인터페이스와 같습니다. – Manu343726