Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    ese.h/ese.cpp/main.cpp; undefined reference to...

    ese.h
    codice:
    #include <iostream>
    #include <cmath>
    
    using namespace std;
    
    class Ese
    {
    private:
        int R;
        int C;
        int i,j;
        double **ese;
    public:
        Ese(int,int);
        ~Ese(void);
            
    };


    ese.cpp
    codice:
    #include <stdio.h>
    #include <iostream>
    #include "ese.h"
    
    Ese::Ese(int rows,int cols)
      {
    
        R = rows;
        C = cols;
        double **ese = new double*[R];
        for(int i = 0; i<R; ++i){
            ese[i] = new double[C];
            }
    
      }
    
    
    Ese::~Ese(void)
    {
    for(i=0; i<R; i++) {
          delete [] ese[i];
       }
       delete [] ese;
    
    }


    main.cpp
    codice:
    #include <stdio.h>
    #include <iostream>
    #include "ese.h"
    
    
    int main(int argc, char **argv)
    {
        Ese pippo= Ese(2,4);
    
    
    }
    Quando mando in esecuzione main.cpp ricevo sempre il messaggio d'errore "undefined reference to Ese::Ese(int, int)" come anche per il distruttore. Sapete dirmi il perchè?
    Grazie in anticipo!

  2. #2
    Probabilmente non hai specificato ese.cpp sulla linea di comando del compilatore. Se compili solo main.cpp il compilatore troverà le dichiarazioni di ese.h (dato che viene incluso in main.cpp), ma il linker non troverà le definizioni (che stanno in ese.cpp), da cui l'errore che riporti.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Infatti non l'ho fatto sia perchè nn sapevo ce ne era bisogno e anche perchè non saprei come fare. Puoi darmi una mano?

  4. #4
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Che compilatore usi?
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  5. #5
    code blocks

  6. #6
    Originariamente inviato da php102030
    code blocks
    Se usi un IDE come Code::Blocks basta che tutti i file siano aggiunti al progetto che stai compilando.
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Grazie mille, ho risolto! Solo che adesso ho un nuovo problema! Infatti quando compilo la console crasha e mi da l'errore "ese.cpp ha smesso di funzionare. Windows: si è verificato un problema che impedisce il funzionamento corretto del programma......", eppure il codice sembra esatto e non da nessun errore. Perchè?

  8. #8
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590

    Re: ese.h/ese.cpp/main.cpp; undefined reference to...

    Originariamente inviato da php102030
    ese.cpp
    codice:
    //...
        double **ese = new double*[R];
    //...
    Qui stai dichiarando una nuova variabile che "nascone" quella della classe...
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  9. #9
    Grazie mille della info, ora ho risolto. Alla prossima!

  10. #10
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Originariamente inviato da php102030
    Grazie mille della info, ora ho risolto. Alla prossima!
    Prego, comunque ti consiglierei di rivedere il codice: ci sono incosistenze nell'uso di i e j e è di dubbia necessità l'inclusione di due membri i e j nella classe, almeno che tu non intenda usarli come puntatore ad un elemento specifico che debba rimanere costante fra diverse chiamate a funzioni della classe...
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

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.