Cuestión : ¿Cómo escribir mi constroctur de la copia profunda?

Hola los expertos,

I que intenta escribir un constructor de la copia para mi clase pero yo son un pedacito pegado. La clase es la clase MyContainer del envase que tiene un mapa como miembro privado. El mapa se compone de objetos que está heredando de la clase MyElement. Hay dos clases que heredan de MyElement Element1 y Element2.

class MyContainer
{
.
.
private:
map;
};

MyContainer::
{
map de MyContainer (&rMyContainer del const MyContainer):: itr del const_iterator = rMyContainer.mpContainer->begin ();
para (; ¡itr! = rMyContainer.mpContainer->end (); ++itr) {llave de la secuencia del
= (*itr) .first; *pTmp del
MyElement = (*itr) .second; ¿*pNewElement del
MyElement = nuevo??? (*pTmp); mpSnapshots->insert del
(make_pair (llave, pNewElement)); el problema del

My del
del
}} es que no entiendo cómo debo saber qué constructor de la copia debo pedir el MyElement puesto que tengo dos clases que hereden de él Element1 y Element2. Que podría ser parte del mapa del mpContainer que es un miembro de la clase de MyContainer. ¿Tengo que utilizar una cierta clase de caso de o qué? Es quizá atrasado pero no puedo calcularlo out.

Thanks experts
class= del

Respuesta : ¿Cómo escribir mi constroctur de la copia profunda?

(A.) Apenas significa que usted no tiene que poner parásitos atmosféricos delante de un interfaz interno.  Puede ser referido siempre, mientras que una clase interna producirá errores de tiempo de compilación si ha utilizado el exterior de las clases a menos que sea estática.  Ver el primer recorte de código atado.

(B.) Esto parece ser falso, como puedo hacer el siguiente sin ningunos errores:

clase MyClass1 {
      clase estática pública MyInnerClass1 {
            parásitos atmosféricos públicos internacional a = 0;

            método vacío estático público () {
            }
      }
}

clase pública WhiteMage {
      vacío público de los parásitos atmosféricos principal args (de la secuencia []) {
            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:
clase MyClass1 {
	interfaz estático público MyInnerInterface1 {
	}

	interfaz público MyInnerInterface2 {
	}

	clase estática pública MyInnerClass1 {
	}

	clase pública MyInnerClass2 {
	}
}

errores de //no
la clase MyClass2 ejecuta MyClass1.MyInnerInterface1, MyClass1.MyInnerInterface2 {
}

/**
 *
 * @author WhiteMage en http://www.experts-exchange.com/
 *
clase pública WhiteMage {
	vacío público de los parásitos atmosféricos principal args (de la secuencia []) {
		MyClass1.MyInnerInterface1 a = nuevo MyClass2 (); error de //no
		MyClass1.MyInnerInterface2 b = nuevo MyClass2 (); error de //no
		MyClass1.MyInnerClass1     c = nuevo MyClass1.MyInnerClass1 (); error de //no

		¡//ERROR!
		MyClass1.MyInnerClass2     d = nuevo MyClass1.MyInnerClass2 ();
	}
}
Otras soluciones  
 
programming4us programming4us