Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    152

    [c++] problema di linker o no??

    Salve a tutti
    Non riesco proprio a capire da cosa può dipendere il mio problema.

    Ho tre file mioprog.h, mioprog.cpp, usemioprog.cpp
    Sia mioprog.cpp sia usemioprog.cpp includono il file mioprog.h.

    Il file usemioprog.cpp
    #include <iostream.h>
    #include "mioprog.h"


    main(){
    mioprog *prova = new mioprog("prova.asc")
    prova->execute(prova);
    prova->Save("test.asc");
    delete prova;

    }

    Quando vado a compilare usemioprog.cpp ho il seguente errore:

    /tmp/ccijIDhw.o: In function `main':
    tmp/ccijIDhw.o(.text+0x2c): undefined reference to `mioprog::mioprog(char *)'
    /tmp/ccijIDhw.o(.text+0x5b): undefined reference to `mioprog::execute(mioprog *)'
    /tmp/ccijIDhw.o(.text+0x71): undefined reference to `mioprog::~mioprog(void)'
    collect2: ld returned 1 exit status


    Si tenga presente che se il codice in grassetto lo inserisco direttamente nel main di mioprog.cpp funziona tutto alla perfezione

    Da cosa può dipendere???
    Grazie a tutti
    andry80

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    152
    ??
    andry80

  3. #3
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425
    posta anche la classe.

    controlla di aver specificato il corpo dei metodi dentro il file .h e non dentro il .cpp

    Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    152
    La classe è :

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <iostream.h>
    #include <fstream.h>
    #include <string>

    class mioprog
    {

    private:

    float *matr; //Matrice
    int a; // Numero di colonne
    int b; // Numero di righe

    public:

    mioprog();
    ~mioprog();
    mioprog(int na, int nb);
    mioprog(const mioprog &bb);
    mioprog(char *P);
    void Save(char *P);
    void Open(char *P);
    void execute(mioprog *pMPA);
    };
    andry80

  5. #5
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425
    Originariamente inviato da andry80
    La classe è :

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <iostream.h>
    #include <fstream.h>
    #include <string>

    class mioprog
    {

    private:

    float *matr; //Matrice
    int a; // Numero di colonne
    int b; // Numero di righe

    public:

    mioprog();
    ~mioprog();
    mioprog(int na, int nb);
    mioprog(const mioprog &bb);
    mioprog(char *P);
    void Save(char *P);
    void Open(char *P);
    void execute(mioprog *pMPA);
    };
    Ma la parte di codice come questa:

    codice:
    mioprog::mioprog() {
    //...
    }
    
    void mioprog::Save() {
    //...
    }
    è dentro mioprog.cpp?

    Io ho sempre messo tutto nel file.h, prova a vedere se funziona, secondo me l'errore è che non trova appunto la definizione dei metodi, del costruttore, distruttore ecc..


    Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    152
    Si , il corpo di mioprog::mioprog() sta in mioprog.cpp.
    Ma in tutti gli esempi che ho sempre visto, nel file .h c'era solo la dichiarazione del prototipo di funzione ma l'implementazione era nel file cpp.
    Per questo la cosa è strana!!!!

    Ciao
    andry80

  7. #7
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    evidentemente hai sbagliato a scrivere il file mioprog.cpp o non lo stai linkando...

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

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.