Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1
    Utente di HTML.it L'avatar di cerza
    Registrato dal
    Oct 2009
    Messaggi
    310

    [c++]richiamare vettore in più classi

    salve,
    ho un'applicazione costituita da diverse classi, ogni classe è accompagnata da un file header all'interno del quale ho dichiarato proprietà e metodi della rispettiva classe. In una di queste classi è stato dichiarato un vettore ma tale vettore devo richiamarlo in altre due classi, per spiegarmi meglio la classe A crea in vettore , le classi B e C dovrebbero richiamare il vettore per poter accerede ad alcuni elementi, a questo punto ho inserito nelle classi B e C l'inclusione del file header della classe A ma ciò mi provoca errori in fase di linking in quanto il vettore risulta già definito.
    come faccio a risolvere questo problema?
    grazie mille

    maria

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Il problema sta più a monte, è architetturale.

    Non puoi condividere un array se questo è un elemento privato di una classe. E non si usano così le classi.

    Posta le classi e facci capire meglio ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di cerza
    Registrato dal
    Oct 2009
    Messaggi
    310
    con buona probabilità hai ragione.... dunque la questione è la seguente:
    nella classe A viene dichiarato un vettore pubblico, tale vettore deve essere richiamto in altre due classi quindi se non inserisco in queste due classi
    codice:
    #include <ClasseA.h>
    non mi ricosce il vettore ma se includo in file.h mi dice che il vettore viene ridefinito più volte.
    c'è anche da dire che facendo il digramma delle classi mi risulta un collegamento 1 a molti tra queste classi, quindi traduco il riferimento "molti" con il vettore ma quello 1 dovrei tradurlo conun riferimetno all'oggetto che non mi viene visto se non importo il file.h
    non so se adesso il problema è più chiaro.....
    ps. non so se posso postare tutto il codice...perchè è molto
    grazie per la disponibilità, buona giornata

    maria

  4. #4
    Non sono sicuro di aver capito bene:
    Dichiari un vettore pubblico nella classe A, a cui vuoi accedere dalle classi B e C. Non ti basta includere la classe A per accedere all'elemento, devi anche istanziare un oggetto della classe A per poi accedere:
    codice:
    oggettoDiClasseA.tuoVettore /* fai qualcosa */;
    A meno di dichiarare il vettore come static, nel qual caso non ti serve un oggetto di classe A per poter accedere al vettore, basta fare:
    codice:
    ClasseA::tuoVettore /* fai qualcosa */;
    Se state chiamando per i piedini mancanti,lasciate il vostro indirizzo,e i piedi di ricambio vi saranno consegnati da mio nipote Jody. E ora, io devo ritornare nel dolce abbraccio della cripta... Ma tornerò!!!

    The Simpson ; AABF08 (Domenica orrenda domenica)

  5. #5
    Utente di HTML.it L'avatar di cerza
    Registrato dal
    Oct 2009
    Messaggi
    310
    ma se lo dichiaro come static posso poi modificare il contenuto del vettore??

  6. #6
    Si, basta che sia pubblico. Un'altra cosa, dichiarandolo static lo devi inizializzare da qualche parte nel tuo programma, te lo chiede il compilatore. Comunque sottoscrivo quello che è stato detto da oregon riguardo al fatto che non si usano così le classi.
    Se state chiamando per i piedini mancanti,lasciate il vostro indirizzo,e i piedi di ricambio vi saranno consegnati da mio nipote Jody. E ora, io devo ritornare nel dolce abbraccio della cripta... Ma tornerò!!!

    The Simpson ; AABF08 (Domenica orrenda domenica)

  7. #7
    Utente di HTML.it L'avatar di cerza
    Registrato dal
    Oct 2009
    Messaggi
    310
    ok, ho capito di avere grossi problemi... potreste suggerirmi un link o altro materiale che mi permetterebbe di capire bene come si usano le classi?
    grazie mille

  8. #8
    Questo è un bigino di quello che bisogna sapere per "pensare in termini di oggetti":
    http://it.wikipedia.org/wiki/Program...a_agli_oggetti
    Se state chiamando per i piedini mancanti,lasciate il vostro indirizzo,e i piedi di ricambio vi saranno consegnati da mio nipote Jody. E ora, io devo ritornare nel dolce abbraccio della cripta... Ma tornerò!!!

    The Simpson ; AABF08 (Domenica orrenda domenica)

  9. #9
    Utente di HTML.it L'avatar di cerza
    Registrato dal
    Oct 2009
    Messaggi
    310
    perdonami per l'insisitenza ma non mi è chiaro quanto riportato nel penultimo commento inq uanto ho provato ad usare
    codice:
    Play::ships[selectObj];
    nella classe dove mi serviva accedere al vettore solo che mi da errori vari se non inserisco il file Play.h nel file Ship.h, a questo punto poichè dovrei accedere al vettore anche dal main e quindi qui includo Play.h e creo effettivamente un oggetto di tipo Play solo che mi da il seguente errore
    codice:
    simbolo esterno "public: static class std::vector<class Ship,class std::allocator<class Ship> > Play::ships" (?ships@Play@@2V?$vector@VShip@@V?$allocator@VShip@@@std@@@std@@A) non risolto
    grazie mille per la disponibilità

    maria

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Continui ad usare il C++ come se fosse C

    Per questo hai tanti errori e probabilmente ne avrai anche dopo ...

    Prova invece a definire il tuo vettore come una proprietà privata della classe a cui accedi tramite apposite "funzioni membro" pubbliche. Una volta che avrai istanziato la classe, tutto il tuo codice potrà accedere al vettore in questione tramite le relative funzioni membro.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.