Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di Alcott
    Registrato dal
    Jul 2003
    Messaggi
    154

    [C++] Non aggiunge file al progetto

    Ciao a tutti raga.
    Spero possiate darmi una mano che sono disperato . 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

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    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?

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [C++] Non aggiunge file al progetto

    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.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Utente di HTML.it L'avatar di Alcott
    Registrato dal
    Jul 2003
    Messaggi
    154
    Scusate, ho scordato di mettere l'IDE: Embedded Visual C++.
    Vi posto anche i file, tanto sono piccoli.

    codice:
    #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
    
    };
    codice:
    #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
    codice:
    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

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 © 2025 vBulletin Solutions, Inc. All rights reserved.