Questa è una domanda molto semplice, ma sono sicuro che apprezzerei l'aiuto. :)Aiuto con assegnazione C++ semi-complessa
Ecco il mio variabile nel file .h:
map<int, map<int, map<int, CString>*>*> batch;
Ecco me cercando di assegnare un valore:
((*((*(batch[atoi(transnum)]))[1]))[atoi(*docnum)]) = page;
ho aggiunto qualche parentesi in più durante il tentativo di capire questo al fine per assicurarci che i derefs venissero processati nel giusto ordine - sfortunatamente, non funziona ancora. La mia applicazione si blocca quando si esegue questa linea. Lo ho avvolto in una prova {} catch {}, ma non sembra che venga lanciata alcuna eccezione. Non uso C++ molto spesso e mi chiedo se qualcuno possa dirmi cosa sto facendo in modo errato.
Ecco il rapporto che sto cercando di modello:
Elenco dei numeri di transazione (interi), deve essere ordinato a chiave.
Per ciascun numero di transazione, ho due tipi di documenti, pagamenti e fatture (secchi rappresentate da 0 e poi 1, rispettivamente, a mio struct dati sopra riportati)
In ciascun segmento tipo, non ci può essere uno o più documenti, Questi documenti devono essere ordinati da id (docid)
ogni link DocID una stringa che consiste in un elenco delimitato da virgole di f file sul file system per l'elaborazione.
Se pensi che ci sia una struttura dati migliore da usare, sarei interessato a sentirlo.
MODIFICA: So che ci sono molti modi migliori per farlo. Lo scenario era che mi è stato consegnato un mucchio di codice C++ orribile di MFC e mi è stato detto di fare qualcosa ieri. Fondamentalmente si è ridotto a inserire la struttura dei dati, caricandola e poi trasferendola da qualche altra parte. Stavo solo cercando di batterlo velocemente quando ho fatto questa domanda. Apprezzo comunque i suggerimenti sul design.
Mi piacerebbe liberarmi di CString e utilizzare std :: string. La mappa (e le sottoparti della mappa) è già popolata? Potresti provare ad accedere/assegnare posizioni vuote. Cosa stai cercando di realizzare? Mi sembra un codice orribile. – Tim
anche - cosa sono docnum e transnum? – Tim
Sono d'accordo con tim. Ogni volta che vedi classi contenitore annidate in questo modo, è un buon segno che devi creare la tua classe per rappresentare una parte o tutta la struttura dati che stai definendo. – rmeador