making a struct array NULL?

D

djm

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.word.clear();
l.defList=NULL;
}
}

i tried but none of the work. can someone help me out?
thanks
 
J

Jim Langston

djm said:
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.word.clear();
l.defList=NULL;
}
}

i tried but none of the work. can someone help 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.
 
D

djm

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?


}
or something like
this?
IndepHTable::IndepHTable(dictionary l)
{
for(int i=0;i<29;i++)
{
l.word.clear();
l.defList=NULL;
}
}

i tried but none of the work. can someone help 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?
 
D

djm

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?


}
or something like
this?
IndepHTable::IndepHTable(dictionary l)
{
for(int i=0;i<29;i++)
{
l.word.clear();
l.defList=NULL;
}
}

i tried but none of the work. can someone help 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
 
J

Jim Langston

djm said:
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?


}
or something like
this?
IndepHTable::IndepHTable(dictionary l)
{
for(int i=0;i<29;i++)
{
l.word.clear();
l.defList=NULL;
}
}

i tried but none of the work. can someone help 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.
 
J

Jim Langston

djm said:
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?


}
or something like
this?
IndepHTable::IndepHTable(dictionary l)
{
for(int i=0;i<29;i++)
{
l.word.clear();
l.defList=NULL;
}
}

i tried but none of the work. can someone help 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.
 
D

djm

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.word.clear();
l.defList=NULL;
}
}
i tried but none of the work. can someone help 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 help. i got a pretty good knowledge about when
to use a constructor. and in my case the default one does the the job.
thanks!
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,777
Messages
2,569,604
Members
45,204
Latest member
LaverneRua

Latest Threads

Top