ehm.. ma gli altri??
ehm.. ma gli altri??
Per il main
Per TuaClasse.cppcodice:#include "TuaClasse.h" int main() { File A1; A1.ApriFileInScrittura("PROVA.txt", ios::app); A1.GeneraID("PROVA.txt"); A1.ScriviCampo("PROVA.txt", "Salvatore", 20); A1.ScriviCampo("PROVA.txt", "Ciotola", 20); A1.ScriviUltimoCampo("PROVA.txt", "UltimoCampo", 20); getchar(); getchar(); return 0; }
Per TuaClasse.hcodice:#include <iostream> #include <fstream> #include <string> #include <sstream> #include "TuaClasse.h" using namespace std; void File::ApriFileInScrittura(string NomeFile, std::ios_base::openmode metodo) { ofstream write(NomeFile.c_str(), metodo); } void File::GeneraID(string NomeFile) { ifstream trovaID("ID.txt", ios::in); //ID.txt file contentente il numero // dell'ultimo ID inserito if(trovaID) { trovaID >> m_ID; m_ID=m_ID+1; trovaID.close(); } else m_ID=1; ofstream write(NomeFile.c_str(),ios::app); write <<"L;"; /* Imposta FLAG per la CANCELLAZIONE LOGICA*/ ///////////////////////////// stringstream s; // string ss; // s << m_ID ; // ss = s.str(); // /* Dimensione dell' ID = 5 ss.resize(5); // dato che ss.resize(5); */ write <<ss; // ////////////////////// write.close(); // Aggiorna L'ID che viene scritto sul file ID.txt ofstream aggID("ID.txt", ios::out); aggID << m_ID; aggID.close(); } void File::ScriviCampo(string NomeFile, string Campo, int DimCampo) { ofstream write(NomeFile.c_str(),ios::app); Campo.resize(DimCampo); write << Campo; write.close(); } void File::ScriviUltimoCampo(string NomeFile, string Campo, int DimCampo) { ofstream write(NomeFile.c_str(),ios::app); Campo.resize(DimCampo); write << Campo << endl; write.close(); }
codice:#include <iostream> using namespace std; class File { private: int m_ID; public: void ApriFileInScrittura(string NomeFile, std::ios_base::openmode metodo); void GeneraID(string NomeFile); void ScriviCampo(string NomeFile, string Campo, int DimCampo); void ScriviUltimoCampo(string NomeFile, string Campo, int DimCampo); };
No MP tecnici (non rispondo nemmeno!), usa il forum.
C++ 4ever
496e2062696e6172696f206e6f6e2063692061767265737469 206e656d6d656e6f2020726f7661746f203a29
ok raga ho diviso nel seguente modo, ma compilando il main.cpp mi dice:
[Linker error] undefined reference to `File::ApriFileInScrittura(std::string, std::_Ios_Openmode)'
[Linker error] undefined reference to `File::GeneraID(std::string)'
[Linker error] undefined reference to `File::ScriviCampo(std::string, std::string, int)'
[Linker error] undefined reference to `File::ScriviCampo(std::string, std::string, int)'
[Linker error] undefined reference to `File::ScriviUltimoCampo(std::string, std::string, int)'
ld returned 1 exit status
ecco i tre file.
Main.cpp
Toti_class.cppcodice:#include "TotiClass.h" int main() { File A1; A1.ApriFileInScrittura("PROVA.txt", ios::app); A1.GeneraID("PROVA.txt"); A1.ScriviCampo("PROVA.txt", "Salvatore", 20); A1.ScriviCampo("PROVA.txt", "Ciotola", 20); A1.ScriviUltimoCampo("PROVA.txt", "UltimoCampo", 20); getchar(); getchar(); return 0; }
TotiClass.hcodice:#include <iostream> #include <fstream> #include <string> #include <sstream> #include "TotiClass.h" using namespace std; void File::ApriFileInScrittura(string NomeFile, std::ios_base::openmode metodo) { ofstream write(NomeFile.c_str(), metodo); } void File::GeneraID(string NomeFile) { ifstream trovaID("ID.txt", ios::in); //ID.txt file contentente il numero // dell'ultimo ID inserito if(trovaID) { trovaID >> m_ID; m_ID=m_ID+1; trovaID.close(); } else m_ID=1; ofstream write(NomeFile.c_str(),ios::app); write <<"L;"; /* Imposta FLAG per la CANCELLAZIONE LOGICA*/ ///////////////////////////// stringstream s; // string ss; // s << m_ID ; // ss = s.str(); // /* Dimensione dell' ID = 5 ss.resize(5); // dato che ss.resize(5); */ write <<ss; // ////////////////////// write.close(); // Aggiorna L'ID che viene scritto sul file ID.txt ofstream aggID("ID.txt", ios::out); aggID << m_ID; aggID.close(); } void File::ScriviCampo(string NomeFile, string Campo, int DimCampo) { ofstream write(NomeFile.c_str(),ios::app); Campo.resize(DimCampo); write << Campo; write.close(); } void File::ScriviUltimoCampo(string NomeFile, string Campo, int DimCampo) { ofstream write(NomeFile.c_str(),ios::app); Campo.resize(DimCampo); write << Campo << endl; write.close(); }
codice:#include <iostream> using namespace std; class File { private: int m_ID; public: void ApriFileInScrittura(string NomeFile, std::ios_base::openmode metodo); void GeneraID(string NomeFile); void ScriviCampo(string NomeFile, string Campo, int DimCampo); void ScriviUltimoCampo(string NomeFile, string Campo, int DimCampo); };
Se l'hai fatto con DevCpp, forse non hai creato correttamente il progetto ...
L'ho provato e compila correttamente ...
No MP tecnici (non rispondo nemmeno!), usa il forum.
si l'ho ricompilato correttamente. ora funziona
Forse è una stupidata![]()
Main.cpp
#include "TotiClass.h"
Toti_class.cpp
#include "TotiClass.h"
TotiClass.h
In Main.cpp includi TotiClass.h ed instanzi (ed usi) la tua classe File ma in nessuna parte del programma includi Toti_class.cpp! Non so come funzioni il compilatore di c++ ma credo che l'errore sia dovuto al fatto che non sa dove andare a prendere il codice dei metodi che invochi (infatti l'errore viene dal linker) :master:
Se ho detto una stupidata correggetemi![]()
SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
Di questo libro e degli altri (blog personale di recensioni libri) | NO M.P. TECNICI
Non devi compilare singolarmente il main, ma i due .cpp insieme.
Amaro C++, il gusto pieno dell'undefined behavior.