|
|
|
#1 |
|
Messages: n/a
Hébergeur: |
hi,
lets say ive this struct array in my header file public: IndepHTable(); private: struct { string word; List defList; } dictionary[TABLE_SIZE]; how can i make the elements in the array null from the constructor? will this work? IndepHTable::IndepHTable() { word.clear(); defList=NULL; } or something like this? IndepHTable::IndepHTable(dictionary l) { for(int i=0;i<29;i++) { l[i].word.clear(); l[i].defList=NULL; } } i tried but none of the work. can someone me out? thanks |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
"djm" <djmlog103@gmail.com> wrote in message
news:1192519330.761691.111890@k35g2000prh.googlegr oups.com... > hi, > lets say ive this struct array in my header file > > public: > IndepHTable(); > private: > struct > { > string word; > List defList; > } dictionary[TABLE_SIZE]; > > how can i make the elements in the array null from the constructor? > > will this work? > > IndepHTable::IndepHTable() > { > > word.clear(); > defList=NULL; > > } > or something like > this? > > IndepHTable::IndepHTable(dictionary l) > { > for(int i=0;i<29;i++) > { > l[i].word.clear(); > l[i].defList=NULL; > } > } > > i tried but none of the work. can someone me out? > thanks if your string is a std::string then it will already be "cleared". I don't know what your List is, what does it's default constructor do? You are saying defList = NULL, but that presumes that List is a pointer, is it? Probably not, it's probably a class. Most likely, you won't have to do anything, although, again, it depends on what List is. |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
On Oct 16, 12:40 pm, "Jim Langston" <tazmas...@rocketmail.com> wrote:
> "djm" <djmlog...@gmail.com> wrote in message > > news:1192519330.761691.111890@k35g2000prh.googlegr oups.com... > > > > > hi, > > lets say ive this struct array in my header file > > > public: > > IndepHTable(); > > private: > > struct > > { > > string word; > > List defList; > > } dictionary[TABLE_SIZE]; > > > how can i make the elements in the array null from the constructor? > > > will this work? > > > IndepHTable::IndepHTable() > > { > > > word.clear(); > > defList=NULL; > > > } > > or something like > > this? > > > IndepHTable::IndepHTable(dictionary l) > > { > > for(int i=0;i<29;i++) > > { > > l[i].word.clear(); > > l[i].defList=NULL; > > } > > } > > > i tried but none of the work. can someone me out? > > thanks > > if your string is a std::string then it will already be "cleared". I don't > know what your List is, what does it's default constructor do? > > You are saying defList = NULL, but that presumes that List is a pointer, is > it? Probably not, it's probably a class. > > Most likely, you won't have to do anything, although, again, it depends on > what List is. sorry for the lack of info. the pruporse is to make a linked list with rehasing techniques. the list is a class and that has nodes, the values of the objects in the nodes are made in to initial values by thier constructors, as you said i realise that i dont need to make the defList to NULL cuz its already made null. but what about the string? what if i want to make it null so that it wont have any garbage values when i declare them? |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
On Oct 16, 12:40 pm, "Jim Langston" <tazmas...@rocketmail.com> wrote:
> "djm" <djmlog...@gmail.com> wrote in message > > news:1192519330.761691.111890@k35g2000prh.googlegr oups.com... > > > > > hi, > > lets say ive this struct array in my header file > > > public: > > IndepHTable(); > > private: > > struct > > { > > string word; > > List defList; > > } dictionary[TABLE_SIZE]; > > > how can i make the elements in the array null from the constructor? > > > will this work? > > > IndepHTable::IndepHTable() > > { > > > word.clear(); > > defList=NULL; > > > } > > or something like > > this? > > > IndepHTable::IndepHTable(dictionary l) > > { > > for(int i=0;i<29;i++) > > { > > l[i].word.clear(); > > l[i].defList=NULL; > > } > > } > > > i tried but none of the work. can someone me out? > > thanks > > if your string is a std::string then it will already be "cleared". I don't > know what your List is, what does it's default constructor do? > > You are saying defList = NULL, but that presumes that List is a pointer, is > it? Probably not, it's probably a class. > > Most likely, you won't have to do anything, although, again, it depends on > what List is. hmmm then do i actually need a constructor here? cuz 1. the string wil have no initial value? 2. the constructor in List class also makes the contents of "deflist" to NULL |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
"djm" <djmlog103@gmail.com> wrote in message
news:1192520873.134114.54960@i38g2000prf.googlegro ups.com... > On Oct 16, 12:40 pm, "Jim Langston" <tazmas...@rocketmail.com> wrote: >> "djm" <djmlog...@gmail.com> wrote in message >> >> news:1192519330.761691.111890@k35g2000prh.googlegr oups.com... >> >> >> >> > hi, >> > lets say ive this struct array in my header file >> >> > public: >> > IndepHTable(); >> > private: >> > struct >> > { >> > string word; >> > List defList; >> > } dictionary[TABLE_SIZE]; >> >> > how can i make the elements in the array null from the constructor? >> >> > will this work? >> >> > IndepHTable::IndepHTable() >> > { >> >> > word.clear(); >> > defList=NULL; >> >> > } >> > or something like >> > this? >> >> > IndepHTable::IndepHTable(dictionary l) >> > { >> > for(int i=0;i<29;i++) >> > { >> > l[i].word.clear(); >> > l[i].defList=NULL; >> > } >> > } >> >> > i tried but none of the work. can someone me out? >> > thanks >> >> if your string is a std::string then it will already be "cleared". I >> don't >> know what your List is, what does it's default constructor do? >> >> You are saying defList = NULL, but that presumes that List is a pointer, >> is >> it? Probably not, it's probably a class. >> >> Most likely, you won't have to do anything, although, again, it depends >> on >> what List is. > > sorry for the lack of info. > the pruporse is to make a linked list with rehasing techniques. the > list is a class and that has nodes, the values of the objects in the > nodes are made in to initial values by thier constructors, as you said > i realise that i dont need to make the defList to NULL cuz its already > made null. but what about the string? what if i want to make it null > so that it wont have any garbage values when i declare them? A std::string already gets initialized to "" by it's default consturctor. So you don't have to do anything. If you really really really want to though you could do: IndepHTable::IndepHTable(): world("") { } but "" is what the default constructor uses if you don't pass it anything (which you don't by not calling a constructor specifically. In main line this is the difference between: std::string word; std::string word(""); They both make word initialize to "". I.E. no net change with one over the other. |
|
|
|
#6 |
|
Messages: n/a
Hébergeur: |
"djm" <djmlog103@gmail.com> wrote in message
news:1192521446.417753.109310@e9g2000prf.googlegro ups.com... > On Oct 16, 12:40 pm, "Jim Langston" <tazmas...@rocketmail.com> wrote: >> "djm" <djmlog...@gmail.com> wrote in message >> >> news:1192519330.761691.111890@k35g2000prh.googlegr oups.com... >> >> >> >> > hi, >> > lets say ive this struct array in my header file >> >> > public: >> > IndepHTable(); >> > private: >> > struct >> > { >> > string word; >> > List defList; >> > } dictionary[TABLE_SIZE]; >> >> > how can i make the elements in the array null from the constructor? >> >> > will this work? >> >> > IndepHTable::IndepHTable() >> > { >> >> > word.clear(); >> > defList=NULL; >> >> > } >> > or something like >> > this? >> >> > IndepHTable::IndepHTable(dictionary l) >> > { >> > for(int i=0;i<29;i++) >> > { >> > l[i].word.clear(); >> > l[i].defList=NULL; >> > } >> > } >> >> > i tried but none of the work. can someone me out? >> > thanks >> >> if your string is a std::string then it will already be "cleared". I >> don't >> know what your List is, what does it's default constructor do? >> >> You are saying defList = NULL, but that presumes that List is a pointer, >> is >> it? Probably not, it's probably a class. >> >> Most likely, you won't have to do anything, although, again, it depends >> on >> what List is. > > hmmm then do i actually need a constructor here? > cuz > 1. the string wil have no initial value? > 2. the constructor in List class also makes the contents of "deflist" > to NULL No. You do not need a custom constructor here. The default constructor is fine for your purposes. The default constructor for a class will call all the default constructors for contained class instances. You would need a custom constructor if you need to do more than that. I.E. Call a non default constructor (for instance, initializing word to "None" instead of "") or if a variable doesn't have a default constructor (floats, ints, chars, etc...the built in types). Whenever you add a variable to a class think, "Will the default constructor be fine for my purposes?" If not, add it to the custom constructor (creating it if it doesn't exist). Some people may initialize an instance in the custom constructor to the same as the default constructed just to be explicit, to say, "Yeah, I REALLY want this string to be "" ". But is not required. |
|
|
|
#7 |
|
Messages: n/a
Hébergeur: |
On Oct 16, 1:11 pm, "Jim Langston" <tazmas...@rocketmail.com> wrote:
> "djm" <djmlog...@gmail.com> wrote in message > > news:1192521446.417753.109310@e9g2000prf.googlegro ups.com... > > > > > On Oct 16, 12:40 pm, "Jim Langston" <tazmas...@rocketmail.com> wrote: > >> "djm" <djmlog...@gmail.com> wrote in message > > >>news:1192519330.761691.111890@k35g2000prh.google groups.com... > > >> > hi, > >> > lets say ive this struct array in my header file > > >> > public: > >> > IndepHTable(); > >> > private: > >> > struct > >> > { > >> > string word; > >> > List defList; > >> > } dictionary[TABLE_SIZE]; > > >> > how can i make the elements in the array null from the constructor? > > >> > will this work? > > >> > IndepHTable::IndepHTable() > >> > { > > >> > word.clear(); > >> > defList=NULL; > > >> > } > >> > or something like > >> > this? > > >> > IndepHTable::IndepHTable(dictionary l) > >> > { > >> > for(int i=0;i<29;i++) > >> > { > >> > l[i].word.clear(); > >> > l[i].defList=NULL; > >> > } > >> > } > > >> > i tried but none of the work. can someone me out? > >> > thanks > > >> if your string is a std::string then it will already be "cleared". I > >> don't > >> know what your List is, what does it's default constructor do? > > >> You are saying defList = NULL, but that presumes that List is a pointer, > >> is > >> it? Probably not, it's probably a class. > > >> Most likely, you won't have to do anything, although, again, it depends > >> on > >> what List is. > > > hmmm then do i actually need a constructor here? > > cuz > > 1. the string wil have no initial value? > > 2. the constructor in List class also makes the contents of "deflist" > > to NULL > > No. You do not need a custom constructor here. The default constructor is > fine for your purposes. The default constructor for a class will call all > the default constructors for contained class instances. > > You would need a custom constructor if you need to do more than that. I.E. > Call a non default constructor (for instance, initializing word to "None" > instead of "") or if a variable doesn't have a default constructor (floats, > ints, chars, etc...the built in types). > > Whenever you add a variable to a class think, "Will the default constructor > be fine for my purposes?" If not, add it to the custom constructor > (creating it if it doesn't exist). > > Some people may initialize an instance in the custom constructor to the same > as the default constructed just to be explicit, to say, "Yeah, I REALLY want > this string to be "" ". But is not required. thanks a lot for your . i got a pretty good knowledge about when to use a constructor. and in my case the default one does the the job. thanks! |
|
![]() |
| Outils de la discussion | |
|
|