PDA

Visualizza la versione completa : [C++] Non aggiunge file al progetto (Embedded Visual C++)


Alcott
21-11-2006, 12:39
Ciao a tutti raga.
Spero possiate darmi una mano che sono disperato :D. Ho il seguente problema: ad un progetto esistente devo aggiungere una classe. Ho creato quindi il file .h con la definizione della classe e il .cpp con i metodi e gli include (in cui includo lo stesso .h con la definizione della classe) a parte con un altro editor e compilando con questo non ho problemi. Ho aggiunto poi i file al progetto tramite Project-> Add to project-> New Files (ho eseguito la procedura due volte, per l'header e per il source file), vi ho copiato il contenuto e li ho salvati. In compilazione, ricevo vari errori: tutti scaturiti però dal fatto che non mi "vede" la nuova classe in LetturaFW.h. Infatti, mettendo la definizione in LetturaFW.cpp mi compila senza problemi.
Qualcuno è in grado di darmi una mano?
Grasssie :ciauz:

oregon
21-11-2006, 12:46
1) Di quale IDE stiamo parlando?

2) "Non mi vede" che vuol dire? Errori? Messaggi?

3) Cosa hai scritto nel file .h? Cosa nel .cpp? Cosa nel .cpp che usa la classe?

andbin
21-11-2006, 12:49
Originariamente inviato da Alcott
ad un progetto esistente devo aggiungere una classe. Ho creato quindi il file .h con la definizione della classe e il .cpp con i metodi e gli include (in cui includo lo stesso .h con la definizione della classe) a parte con un altro editor e compilando con questo non ho problemi. Ho aggiunto poi i file al progetto tramite Project-> Add to project-> New Files (ho eseguito la procedura due volte, per l'header e per il source file), vi ho copiato il contenuto e li ho salvati. In compilazione, ricevo vari errori: tutti scaturiti però dal fatto che non mi "vede" la nuova classe in LetturaFW.h. Infatti, mettendo la definizione in LetturaFW.cpp mi compila senza problemi.Il sorgente .cpp è ovviamente necessario aggiungerlo al progetto. Il file di include non è strettamente necessario aggiungerlo al progetto. Tecnicamente il compilatore non ci fa nulla direttamente con l'include.

L'include dovrà poi solo essere incluso dagli altri sorgenti che hanno bisogno di utilizzare le funzionalità implementate nel sorgente .cpp aggiunto.

Alcott
21-11-2006, 13:09
Scusate, ho scordato di mettere l'IDE: Embedded Visual C++.
Vi posto anche i file, tanto sono piccoli.



#define MAX_LENGHT 50

class LetturaFW {

private:
char *modelloPalmare[MAX_LENGHT]; // mi dice il modello del palmare es. AT420
char *siglaPalmare[MAX_LENGHT]; // mi dice la sigla associate al modello del palmare es. AP4

public:
LetturaFW(char *nomeFile); // costruttore
~LetturaFW(); // distruttore
char *getModelByFW(char *nomeModello); // mi legge il file di testo e mi salva i dati negli array

};




#include "LetturaFW.h"
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include "stdafx.h"

// costruttore
LetturaFW::LetturaFW(char *nomeFile){
FILE *fp; // file pointer
char c;
char *array, *modello, *sigla, *temp;
int i=0, j, indice=0;int stringa=0;
bool flag = true;

for(i=0; i<MAX_LENGHT; i++)
{
modelloPalmare[i] = (char *)malloc(MAX_LENGHT);
siglaPalmare[i] = (char *)malloc(MAX_LENGHT);
}
array = (char*) malloc (MAX_LENGHT*2);
temp = (char*) malloc (MAX_LENGHT*2);
modello = (char*) malloc (MAX_LENGHT);
sigla = (char*) malloc (MAX_LENGHT);

fp = fopen(nomeFile, "r");

if(fp == NULL){
printf("Errore: controllare il path del file\n");
exit(0);
}
do
{
fgets(array, MAX_LENGHT*2, fp);
if(array[0] != '[' && array[0] != '#')
{
for (j=0, i=0; array[i] != '='; j++, i++)
{
modello[j] = array[i];
}
modello[j] = '\0'; // termino l'array
i++;
for (j=0; array[i] != '\n'; j++, i++)
{
sigla[j] = array[i];
}
sigla[j] = '\0'; // termino l'array
strcpy(modelloPalmare[indice], modello);
strcpy(siglaPalmare[indice], sigla);
indice++;
} // end IF
if(strcmp(temp, array) == 0)
flag = false;
strcpy(temp, array);
} while (flag == true);
fclose(fp);
}

// distruttore
LetturaFW::~LetturaFW(){

}

// altri metodi
char *LetturaFW::getModelByFW(char *nomeFW){
int i=0;

while (strcmp(nomeFW, modelloPalmare[i]) != 0 )
i++;
return siglaPalmare[i];
} // fine metodo getModelByFW()


E qui gli errori


C:\CIGE Mobile\rel 3.0\dev\client\ApplicazioneCIGE\Cige\LetturaFW.cpp (9) : error C2653: 'LetturaFW' : is not a class or namespace name
C:\CIGE Mobile\rel 3.0\dev\client\ApplicazioneCIGE\Cige\LetturaFW.cpp (16) : error C2065: 'MAX_LENGHT' : undeclared identifier
C:\CIGE Mobile\rel 3.0\dev\client\ApplicazioneCIGE\Cige\LetturaFW.cpp (18) : error C2065: 'modelloPalmare' : undeclared identifier
C:\CIGE Mobile\rel 3.0\dev\client\ApplicazioneCIGE\Cige\LetturaFW.cpp (18) : error C2109: subscript requires array or pointer type
C:\CIGE Mobile\rel 3.0\dev\client\ApplicazioneCIGE\Cige\LetturaFW.cpp (19) : error C2065: 'siglaPalmare' : undeclared identifier
C:\CIGE Mobile\rel 3.0\dev\client\ApplicazioneCIGE\Cige\LetturaFW.cpp (19) : error C2109: subscript requires array or pointer type
C:\CIGE Mobile\rel 3.0\dev\client\ApplicazioneCIGE\Cige\LetturaFW.cpp (48) : error C2109: subscript requires array or pointer type
C:\CIGE Mobile\rel 3.0\dev\client\ApplicazioneCIGE\Cige\LetturaFW.cpp (48) : error C2664: 'strcpy' : cannot convert parameter 1 from 'int' to 'char *'
Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
C:\CIGE Mobile\rel 3.0\dev\client\ApplicazioneCIGE\Cige\LetturaFW.cpp (49) : error C2109: subscript requires array or pointer type
C:\CIGE Mobile\rel 3.0\dev\client\ApplicazioneCIGE\Cige\LetturaFW.cpp (49) : error C2664: 'strcpy' : cannot convert parameter 1 from 'int' to 'char *'
Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
C:\CIGE Mobile\rel 3.0\dev\client\ApplicazioneCIGE\Cige\LetturaFW.cpp (60) : error C2653: 'LetturaFW' : is not a class or namespace name
C:\CIGE Mobile\rel 3.0\dev\client\ApplicazioneCIGE\Cige\LetturaFW.cpp (65) : error C2653: 'LetturaFW' : is not a class or namespace name
C:\CIGE Mobile\rel 3.0\dev\client\ApplicazioneCIGE\Cige\LetturaFW.cpp (68) : error C2109: subscript requires array or pointer type
C:\CIGE Mobile\rel 3.0\dev\client\ApplicazioneCIGE\Cige\LetturaFW.cpp (68) : error C2664: 'strcmp' : cannot convert parameter 2 from 'int' to 'const char *'
Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
C:\CIGE Mobile\rel 3.0\dev\client\ApplicazioneCIGE\Cige\LetturaFW.cpp (68) : fatal error C1903: unable to recover from previous error(s); stopping compilation


Grasssie :ciauz:

Loading