가방 컨테이너를 만들려고합니다. =
운영자에게 과부하가 걸려서 문제가 발생합니다. 이 헤더값으로 참조로 전달되는 매개 변수에서 길을 잃으십시오.
Zsak& Zsak::operator =(const Zsak& a)
{
(*this).V=a.V;
(*this).elemsz=a.elemsz;
return *this;
}
:
class Zsak
{
public:
Zsak(){V=new Elem[100];}
Zsak (const Zsak & a)
{
*this=a;
}
Zsak(int meret)
{
V=new Elem[meret];
}
~Zsak(){delete[] V;}
Zsak& operator -(const Zsak& b);
Zsak& operator =(const Zsak& a);
void Zsak_Ba(int e);
void Zsak_Bol(int e);
bool Uress();
int E_Hany(int e) const;
friend std::ostream& operator << (std::ostream& out,const Zsak& z);
private:
Elem *V;
int elemsz=0;
};
의 Zsak_Ba
는 가방에 요소를 둔다;
Zsak_Bol
은 가방에서 요소를 꺼냅니다.
테스트를 통해 관찰 한 결과 의 주소는 *this
의 주소로 식별됩니다.
1 2
2 3
4 1
1 2
2 3
4 1
그리고 무엇 정말 인쇄해야하는 것은 :
1 3
2 3
4 1
1 2
2 3
4 1
내가이를 얻기 위해 무엇을해야 이러한 맥락
Zsak z(5),c(5);
z.Zsak_Ba(1);
z.Zsak_Ba(1);
z.Zsak_Ba(1);
z.Zsak_Ba(2);
z.Zsak_Ba(2);
z.Zsak_Ba(2);
z.Zsak_Ba(4);
Zsak d=z;
d.Zsak_Bol(1);
cout<<z<<endl<<d;
그것은 인쇄와
? 내가 뭘 잘못하고있어? 그리고 왜?고맙습니다.
여기에 포인터 만 복사하고 있습니다 :'(* this) .V = a.V;'. 이제 두 개의 객체가 동일한 데이터를 가리 킵니다. – juanchopanza
그리고 이것을 제거하려면 어떻게해야합니까? – Iero
RHS 객체가 가리키는 배열의 모든 요소를 LHS 객체가 가리키는 배열의 요소에 할당합니다. – juanchopanza