Fråga : Hur man skriver mitt djupt kopiera constroctur?

Hi experter, den pröva förmiddagen för

I att skriva en kopieraconstructor för mitt klassificerar, men I-förmiddag a bet fastnat. Klassificera är behållaren klassificerar MyContainer som har en kartlägga som en privat medlem. Kartlägga göras upp av anmärker som övertar från klassificera MyElement. Det finns två klassificerar som övertar från MyElement Element1 och Element2.

class MyContainer
{
.
.
private:
som map *mpContainer;
};

MyContainer:: MyContainer (&rMyContainer för const MyContainer)
{
som map:: itr för const_iterator = rMyContainer.mpContainer->begin ();
för (; itr! = rMyContainer.mpContainer->end (); ++itr) {
stränger nyckel- = (*itr) .first; *pTmp för
MyElement = (*itr) .second; *pNewElement för
MyElement = nytt??? (*pTmp); mpSnapshots->insert för
(make_pair (stämma, pNewElement)),; problemet för

My för
för
}} är att jag inte förstår hur jag bör veta att vilket kopiera constructoren, jag bör appellen för MyElementen, sedan jag har två klassificerar som övertar från den Element1 och Element2. Båda, som kunde vara av delen av mpContaineren, kartlägger, som är en medlem av MyContaineren, klassificerar. Jag måste att använda någon sort av anföra som exempel av, eller vad? Kanske den är sen, men jag kan inte figurera den out.

Thanks experts
" klar "

Svar : Hur man skriver mitt djupt kopiera constroctur?

(A.) Precis hjälpmedlet, att du inte måste att sätta statisk elektricitet framme av ett inre, har kontakt.  Den kan alltid hänvisas till, fördriver ett inre klassificerar ska compile-time fel för jordbruksprodukter, om den har använt klassificerar förutom, om inte det är statisk elektricitet.  Se först för att kodifiera den fäste snippeten.

(B.) Detta verkar för att vara falskt, som jag kan göra efter without de några felen:

klassificera MyClass1 {
      den offentliga statisk elektricitet klassificerar MyInnerClass1 {
            offentlig statisk elektricitet int a = 0;

            utan laga kraft metod för offentlig statisk elektricitet () {
            }
      }
}

allmänhet klassificerar WhiteMage {
      utan laga kraft huvudsakligt för offentlig statisk elektricitet (stränga [] args) {
            MyClass1.MyInnerClass1.a = 45;
            MyClass1.MyInnerClass1.method ();
      }
}
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
klassificera MyClass1 {
	den offentliga statisk elektricitet har kontakt MyInnerInterface1 {
	}

	allmänhet har kontakt MyInnerInterface2 {
	}

	den offentliga statisk elektricitet klassificerar MyInnerClass1 {
	}

	allmänhet klassificerar MyInnerClass2 {
	}
}

//no fel
klassificera MyClass2 genomför MyClass1.MyInnerInterface1, MyClass1.MyInnerInterface2 {
}

/**
 *
 * @author WhiteMage på http://www.experts-exchange.com/
 *
allmänhet klassificerar WhiteMage {
	utan laga kraft huvudsakligt för offentlig statisk elektricitet (stränga [] args) {
		MyClass1.MyInnerInterface1 a = ny MyClass2 (); //no fel
		MyClass1.MyInnerInterface2 b = ny MyClass2 (); //no fel
		MyClass1.MyInnerClass1     c = ny MyClass1.MyInnerClass1 (); //no fel

		//ERROR!
		MyClass1.MyInnerClass2     D = ny MyClass1.MyInnerClass2 ();
	}
}
Andra lösningar  
 
programming4us programming4us