From: <gar...@gm...> - 2007-02-19 21:15:40
|
Hi, i'm trying to use vul_file_iterator but i habe same problems. If I do a local declaration of vul_file_iterator fn, there is no problem to use it. But if fn is a member of a class class images { public: images(); private vul_file_iterator fn; }; images::images() { fn=3D"/home/path/to/jpeg/*; } and when i try to use it in a class method, int images::load_ini_image=09( ) { vcl_cout << "load_ini_image() do-while " << fn() <<" \n"; ++fn; }=09=09// ----- end of method images::load_ini_image() ----- i become a segment violation. What i'm doing wrong? Thanks in advance, Gast=F3n --=20 ------------------------------------------------- Gast=F3n Aragu=E1s Centro de Investigaci=F3n en Inform=E1tica para la Ingenier=EDa (CIII) Univ. Tecnol=F3gica Nacional Facultad Regional C=F3rdoba. Argentina |
From: <gar...@gm...> - 2007-02-27 19:36:36
|
Hello, i'm having still problems with the use of vul_iterator in a class. If i do: for (vul_file_iterator fn=3DFILEPATH; fn; ++fn) { =09vcl_cout << "constructor " << fn() << "\n"; } there is no proble and i obtain the files of the hole directory: $ ./bin/tesis vgui : registered 'gtk2' vgui : initialize 'gtk2' constructor /home/garaguas/vision/projects/tesis/bin/jpeg/00000001.jpg constructor /home/garaguas/vision/projects/tesis/bin/jpeg/00000002.jpg constructor /home/garaguas/vision/projects/tesis/bin/jpeg/00000003.jpg constructor /home/garaguas/vision/projects/tesis/bin/jpeg/00000004.jpg ... But if i declare fn as a member (public or private, is the same), then wenn withtin a method of the class i do: for (fn=3DFILEPATH; fn; ++fn) { =09vcl_cout << "constructor " << fn() << "\n"; } i obtain: $ ./bin/tesis vgui : registered 'gtk2' vgui : initialize 'gtk2' constructor /home/garaguas/vision/projects/tesis/bin/jpeg/00000001.jpg vul_reg_exp::find(): Compiled regular expression corrupted. *** glibc detected *** double free or corruption (out): 0x083ab018 *** Any suggestions? Thanks, Gast=F3n On 2/19/07, Gast=F3n Aragu=E1s <gar...@gm...> wrote: > Hi, > > i'm trying to use vul_file_iterator but i habe same problems. > If I do a local declaration of vul_file_iterator fn, there is no > problem to use it. > But if fn is a member of a class > > class images > { > public: > images(); > private > vul_file_iterator fn; > }; > > images::images() > { > fn=3D"/home/path/to/jpeg/*; > } > > and when i try to use it in a class method, > > int images::load_ini_image ( ) > { > vcl_cout << "load_ini_image() do-while " << fn() <<" \n"; > ++fn; > } // ----- end of method images::load_ini_image() ----- > > > i become a segment violation. > > What i'm doing wrong? > Thanks in advance, Gast=F3n > > > -- > ------------------------------------------------- > Gast=F3n Aragu=E1s > Centro de Investigaci=F3n en Inform=E1tica > para la Ingenier=EDa (CIII) > Univ. Tecnol=F3gica Nacional > Facultad Regional C=F3rdoba. Argentina > --=20 ------------------------------------------------- Gast=F3n Aragu=E1s Centro de Investigaci=F3n en Inform=E1tica para la Ingenier=EDa (CIII) Univ. Tecnol=F3gica Nacional Facultad Regional C=F3rdoba. Argentina |
From: Markus M. <mol...@ar...> - 2007-02-27 21:50:40
|
Hi On Tuesday 27 February 2007 20:36, Gast=F3n Aragu=E1s wrote: > But if i declare fn as a member (public or private, is the same), then > wenn withtin a method of the class i do: > for (fn=3DFILEPATH; fn; ++fn) > { > vcl_cout << "constructor " << fn() << "\n"; > } > > i obtain: > $ ./bin/tesis > vgui : registered 'gtk2' > vgui : initialize 'gtk2' > constructor /home/garaguas/vision/projects/tesis/bin/jpeg/00000001.jpg > vul_reg_exp::find(): Compiled regular expression corrupted. > *** glibc detected *** double free or corruption (out): 0x083ab018 *** > > > Any suggestions? At least in vxl 1.6.0 this is a bug. vnl_file_iterator contains a pointer a= nd=20 violates the rule of three. From your description I guess it's still the=20 same. Don't copy a vul_file_iterator until it's fixed. Markus |
From: Amitha P. <ami...@us...> - 2007-02-27 23:23:38
|
On Tue 27 Feb 2007, Gast=F3n Aragu=E1s wrote: > Hello, i'm having still problems with the use of vul_iterator in a clas= s. [...] > But if i declare fn as a member (public or private, is the same), then > wenn withtin a method of the class i do: > for (fn=3DFILEPATH; fn; ++fn) vul_file_iterator is not designed to be copy constructed or assigned to. After all, how often do you want to have two iterators over the same list, at the same position, etc? Perhaps what you want is the reset() method? Post back to the list if this works for you. I will then make the assignment operator and copy constructor private to force a compiler error (instead of a run-time error). Amitha. |
From: <gar...@gm...> - 2007-02-28 12:41:42
|
On 2/27/07, Amitha Perera <ami...@us...> wrote: > vul_file_iterator is not designed to be copy constructed or assigned > to. After all, how often do you want to have two iterators over the > same list, at the same position, etc? > > Perhaps what you want is the reset() method? Thank you for replying. What i want is to read the next file in a directory wen a vgui event occur, and i thought in having an iterator as a member of the class and in each method call from the event handler, to read the file and increment the iterator. Another way is a global iterator? I going to take a look to the reset method. Gast=F3n --=20 ------------------------------------------------- Gast=F3n Aragu=E1s Centro de Investigaci=F3n en Inform=E1tica para la Ingenier=EDa (CIII) Univ. Tecnol=F3gica Nacional Facultad Regional C=F3rdoba. Argentina |
From: Amitha P. <ami...@us...> - 2007-03-01 23:40:00
|
On Wed 28 Feb 2007, Gast=F3n Aragu=E1s wrote: > What i want is to read the next file in a directory wen a vgui event > occur, and i thought in having an iterator as a member of the class > and in each method call from the event handler, to read the file and > increment the iterator. That sounds reasonable. To read the next file, you should simply call "++it". You should only call the reset() method when you want to change the pattern you are globbing over. Amitha. |