Esta es una pregunta realmente fácil, estoy seguro, pero agradecería la ayuda. :)Ayuda con la asignación C++ semi-compleja
Aquí es mi variable en el archivo .h:
map<int, map<int, map<int, CString>*>*> batch;
Aquí soy yo tratando de asignar un valor:
((*((*(batch[atoi(transnum)]))[1]))[atoi(*docnum)]) = page;
he añadido algunos paréntesis adicionales al tratar de resolver esto con el fin para asegurarse de que los derefs se estaban procesando en el orden correcto; desafortunadamente, todavía no funciona. Mi aplicación simplemente se bloquea al ejecutar esta línea. Lo tengo envuelto en una prueba {} catch {}, pero parece que no se lanza ninguna excepción. No uso C++ muy a menudo y me pregunto si alguien me puede decir lo que estoy haciendo incorrectamente.
Aquí es la relación que estoy tratando de modelo:
Lista de números de transacción (enteros), debe ser ordenada por la clave.
Para cada número de transacción, tengo dos tipos de documentos, pagos y facturas (cubos representados por 0 y luego 1, respectivamente, en mi struct datos arriba)
En cada cubo tipo, hay puede ser uno o más documentos, Estos documentos deben ser ordenados por ID (iddoc)
Cada correspondiente DocID enlaces a una cadena que consiste en una lista separada por comas de f archivos en el sistema de archivos para su procesamiento.
Si cree que hay una mejor estructura de datos para usar, me interesaría saberlo.
EDIT: Sé que hay muchas formas mejores de hacerlo. El escenario fue que me entregaron un montón de código C++ horrible y lleno de MFC y me dijeron que hiciera algo ayer. Básicamente se redujo a obtener la estructura de datos allí, cargarla y luego enviarla a otro lugar. Estaba tratando de golpearlo rápidamente cuando hice esta pregunta. Aunque aprecio las sugerencias de diseño.
Me gustaría deshacerme de la CString y usar std :: string. ¿El mapa (y las subpartes del mapa) ya está poblado? Puede estar intentando acceder/asignar posiciones vacías. ¿Qué está tratando de lograr? Eso parece un código horrible para mí. – Tim
también - ¿qué son docnum y transnum? – Tim
Estoy de acuerdo con tim. Cada vez que vea clases de contenedores anidados como esa, es una buena señal de que necesita crear su propia clase para representar parte o la totalidad de la estructura de datos que está definiendo. – rmeador