클래스 세트가 있습니다.
class A
{
public:
A(B b) {//..}
A(C C) {//..}
A(D D) {//..}
A& operator+=(A const& ls) {//..}
A operator+(A const& ls) const {//..}
}
class B
{
//....
}
class C
{
//....
}
class D
{
//....
}
다음 작업을 지원하고 싶습니다.
1) A result = a1 + a2;
2) a1 += a2;
3) A result = b1 + a1; (and C, D classes instead of B)
4) A result = a1 + b1; (and C, D classes instead of B)
5) a1 += b1; (and C, D classes instead of B)
이 경우 어떻게해야합니까? 사용하고 싶지 않습니다 boost
.
당신이없는 것은 암시 적 변환입니다 B
, C
그리고 D
에 A
의 LHS에 대한 operator+
. 연산자를 비 멤버 함수로 만들어이를 허용 할 수 있습니다. 예를 들면 :
A operator+(A const& ls, A const& rs)
{
A ret = ls;
ret += rs;
return ret;
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다