13. december 2006 - 20:59
Der er
13 kommentarer og 1 løsning
fil i c++-class
hi, jeg vil gerne have en class, som arbejder med præcis en fil. nu vil jeg gerne have file-handleren til at stå i "private"-parten af denne class --- class test { private: ??? public: test(char*); } test::test(char* fileName) { fstream classFile(fileName, ios::in|ios::out|ios::binary); } --- hvordan skal det se ud, hvis "classFile" skal være i "private:"? problemet er, at hvis classFile åbner en fil i selve konstruktoren, så kan andre class-funktioner ikke arbejde med classFile pga. at classFile kun er defineret i test::test(char* fileName);
Annonceindlæg fra Kingston Technology
13. december 2006 - 21:03
#1
class test { private: fstream classFile; public: test(char*); }; test::test(char* fileName) : classFile(fileName, ios::in|ios::out|ios::binary) { }
13. december 2006 - 21:05
#2
class test { private: fstream *classFile; public: test(char*); } test::test(char* fileName) { classFile = new fstream(fileName, ios::in|ios::out|ios::binary); } var vel oplagt
13. december 2006 - 21:06
#3
class test { private: fstream classFile; public: test(char*); }; test::test(char* fileName) { classFile.open(fileName, ios::in|ios::out|ios::binary); }
13. december 2006 - 21:16
#4
findes der også en mulighed, hvor man flexibelt kan ændre filen? eller hvor jeg senere kan åbne filen - uden konstruktor? --- class test { private: fstream classFile; public: test(void); openFile(char*); }; test::test(void) { // filen bliver åbnet senere } void test::openFile(char* fileName) : classFile(fileName, ios::in|ios::out|ios::binary) { } --- hos mig siger compileren, at man på denne måde kun må abne en fil inde i en konstruktor
13. december 2006 - 21:18
#5
ok - mens jeg har fortsættet spørgsmålet, blev der allerede svaret. jeg skal lige læse :-)
13. december 2006 - 21:44
#6
metoden med ": classFile(fileName, ios::in|ios::out|ios::binary)" virker kun for constructor. I openFile skal du bruge open: classFile.open(fileName, ios::in|ios::out|ios::binary);
13. december 2006 - 23:16
#7
nu har jeg problemet, at jeg ikke kan få close(), seekg, osv. til at virke --- class test { private: fstream classFile; public: test(char*); void seekTest(int sp) }; test::test(char* fileName) { classFile.open(fileName, ios::in|ios::out|ios::binary); } void test::seekTest(int sp) { this->ClassFile.seekg(sp); // virker ikke } ---
13. december 2006 - 23:25
#8
Jeg kan ikke se problemet (ud over et manglende ; og et C der burde være c) Dette virker: #include <fstream> #include <iostream> using namespace std; class test { private: fstream classFile; public: test(char*); void seekTest(int sp); int tellTest(); }; test::test(char* fileName) { classFile.open(fileName, ios::in|ios::out|ios::binary); } void test::seekTest(int sp) { classFile.seekg(sp); // virker ikke } int test::tellTest() { return classFile.tellg(); } int main() { test File("testing.cpp"); cout << "Before: " << File.tellTest() << endl; File.seekTest(10); cout << "After: " << File.tellTest() << endl; }
13. december 2006 - 23:27
#9
er der forskel på - om jeg bruger this->classFile.seekg(sp); eller classFile.seekg(sp); ? det er den eneste forskel, som jeg kan se
13. december 2006 - 23:30
#10
Nej, et er det samme. Men dit er med C og mit er med c Og du mangler et ; efter prototypen i class'en
14. december 2006 - 17:50
#11
husk at skrive svar - pga. points bertelbrander, arne_v
15. december 2006 - 00:39
#12
Jeg samler ikke på point.
15. december 2006 - 04:38
#13
jeg gør, men jeg ved ikke om du har haft nogen nytte af mit forslag om at bruge en pointer
15. december 2006 - 04:39
#14
nå hvis nu og såfremt
Kurser inden for grundlæggende programmering