Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Far si che un oggetto usi a sua volta un oggetto
Forum - C/C++ - Far si che un oggetto usi a sua volta un oggetto

Avatar
Jenosky (Normal User)
Newbie


Messaggi: 11
Iscritto: 28/09/2012

Segnala al moderatore
Postato alle 18:52
Venerdì, 28/09/2012
Salve ragazzi.
Il mio problema è il seguente:
ho creato una classe che, per svolgere alcune operazioni, usa gli elementi di un'altra classe.
Come devo inserire i vari header in un progetto?
Vi ringrazio in anticipo e, se vi serve, vi mostro gli header delle due classi.

Ho provato ad inserire nella classe primaria la classe secondaria inserendo:

#include "classesecondaria.h"

ma la classe primaria non mi riconosce gli oggetti della secondaria :(

Spero di essere stato chiaro :)

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6388
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 19:03
Venerdì, 28/09/2012
Mostraci il codice ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
anthony015 (Member)
Pro


Messaggi: 116
Iscritto: 20/05/2011

Segnala al moderatore
Postato alle 19:08
Venerdì, 28/09/2012
no, non sei stato molto chiaro :)
forse vorresti accedere alle variabili e/o metodi privati di un'altra classe?
se così è basta inserire all'interno della classe alla quale si vuole accedere un
Codice sorgente - presumibilmente C/C++

  1. friend class AltraClasse;



ma molto probabilmente non è questo quello che intendevi

PM Quote
Avatar
Jenosky (Normal User)
Newbie


Messaggi: 11
Iscritto: 28/09/2012

Segnala al moderatore
Postato alle 19:14
Venerdì, 28/09/2012
Subito!
Questo è il codice della classe che voglio includere:
e qui invece è dove voglio includerlo:
Codice sorgente - presumibilmente C++

  1. #ifndef _matrix_H_
  2. #define _matrix_H_
  3. #include <string>
  4. #include <stdlib.h>
  5. #include <iostream>
  6.  
  7.  
  8. using namespace std;
  9.  
  10.  
  11. class matrix {
  12.       public:
  13.              float** mat;
  14.              int m,n;
  15.              matrix (int righe=2, int colonne=2);
  16.              void expmat (int righe, int colonne); //ridimensiona la matrice
  17.              void printmat (); //stampa la matrice
  18.              void nullmat (); //pone uguale a zero tutti gli elementi della matrice
  19.              ~matrix();
  20.            };
  21.  
  22. #endif
  23.  
  24. void copymat(matrix &A, matrix B); //copia il contenuto di B in A
  25. void prodmat (matrix A, matrix B, matrix &C); //fa il prodotto righe per colonne tra A e B e da come risultato C


come potete vedere ho inserito:
#include "matrix.h"
ed ho creato una variabile di tipo matrix.
Codice sorgente - presumibilmente C++

  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4. #include <math.h>
  5. #include "matrix.h"
  6.  
  7.  
  8. using namespace std;
  9.  
  10. class chain {
  11.       public:
  12.              matrix L();
  13.              chain();
  14.              float T[4][4];
  15.              void addharm ();
  16.       private:
  17.              
  18.               };



Quando poi vado a gestire il main...
Codice sorgente - presumibilmente C++

  1. #include <iostream>
  2. #include <stdlib.h>
  3. #include "chain.h"
  4. #include "matrix.h"
  5.  
  6. using namespace std;
  7.  
  8. int main() {
  9. chain A;
  10. cout<<A.L.mat[2][2];
  11. A.addharm();
  12.  
  13. system("PAUSE");
  14. return 0;
  15. };


mi da questo problema:
dovrebbe visualizzarmi l'elemento della matrice (oggetto classe incluse) dell'oggetto chain ma ciò non accade.
Inoltre se provo ad usare la variabile matrix L nel file chain.cpp mi dice che non è inizializzata...
che sbaglio?

nb: le due classi, prese da sole, funzionano bene, quando provo a combinarle non riesco :(

Ultima modifica effettuata da Jenosky il 28/09/2012 alle 19:32
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6388
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 19:34
Venerdì, 28/09/2012
Non

matrix L();

ma

matrix L;


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
Jenosky (Normal User)
Newbie


Messaggi: 11
Iscritto: 28/09/2012

Segnala al moderatore
Postato alle 19:43
Venerdì, 28/09/2012
Nessuno ha la mia stima!
:k:
Grazie davvero! Grazie!
:)
Che errore stupido! Pensavo di poter inizializzare con dei parametri la matrice già nell'altra classe.
Ti ringrazio, mi hai tolto un peso dalla tesi!

PM Quote