안녕하세요 여러분, 템플릿과 같은 pair
을 구현하려고합니다. 나는 이것을 시도했다 :페어 템플릿의 오버로드 할당 (=) 연산자
#include<iostream>
using namespace std;
template<class T1, class T2>
class Pair
{
//defining two points
public:
T1 first;
T2 second;
//default constructor
Pair():first(T1()), second(T2())
{}
//parametrized constructor
Pair(T1 f, T2 s) : first(f),second(s)
{}
//copy constructor
Pair(const Pair<T1,T2>& otherPair) : first(otherPair.first), second(otherPair.second)
{}
//overloading == operator
bool operator == (const Pair<T1, T2>& otherPair) const
{
return (first == otherPair.first) && (second == otherPair.second);
}
//overloading = operator
Pair<T1, T2> operator = (const Pair<T1, T2>& otherPair)
{
first=otherPair.first;
second=otherPair.second;
return this;
}
int main()
{
Pair<int, int> p1(10,20);
Pair<int, int> p2;
p2 = p1;
}
그러나 오버로드 된 메서드의 마지막 줄에 오류가 나타남 =. this
개체를 반환 할 수 없습니다.
누구든지 내가 뭘 잘못하고 있는지 도울 수 있습니까?
'T1' /'T2' 란 무엇입니까? 그들은 선언되지 않았다. –
'* this'를 반환해야합니다. –
s /'쌍 연산자 = (const 쌍 & otherPair)'/'쌍 & 연산자 = (쌍을 const & otherPair)'s /'이것을 돌려줍니다; * this;'. –
user0042