doubt on scope of pointers VERY URGENT!!!!!!!!! PLEASE HELP ME.........

E

edu.mvk

Hi ,

if the program is like this ...

please tell me the scope of the "ptr" and the vector "vec_ptr"...

class A
{
private :
vector< B* > vec_ptf ;
public :
init();
shutdown();
}

A :: init()
{
B *ptr;
int i=0;
while( i < 10 )
{
ptr = new B();
vec_ptr.push_back( ptr );
}
}

A :: shutdown()
{
if ( !vec_ptr.empty() )
{
vector<B*>::iterator B_Iterator;
for( B_Iterator = vec_ptr.begin(); B_Iterator !=
vec_ptr.end(); B_Iterator++ )
{
delete( vec_ptr[QCop_Iterator] );
}
}
}

if i have declared and instantiated the " ptr " in the function init()
like above and after pushing that into the vector of type B* will the
object be remain even in the shutdown() function....??

please tell me the scope of that pointer ptr and the vector that
containing the ptr.


Tthanks
 
J

Jakob Bieling

This is UseNet. *Wait* at *least* 30 minutes for your post to show
up. There is no need to post the same message *three* times in one
minute. Also, yelling "VERY URGENT!!!!!!" in the subject line (or
yelling in general, by writing all-caps) will not get your question
answered any quicker. If someone knows the answer, they will answer,
otherwise they will not, regardless of your shouting.
class A
{
private :
vector< B* > vec_ptf ;

vector< B* > vec_ptr ;

Do not type the code in your news reader. Copy and paste the same
code that you used for compiling.
public :
init();
shutdown();
}

;
A :: init()
{
B *ptr;
int i=0;
while( i < 10 )
{
ptr = new B();
vec_ptr.push_back( ptr );
}
}

A :: shutdown()
{
if ( !vec_ptr.empty() )
{
vector<B*>::iterator B_Iterator;
for( B_Iterator = vec_ptr.begin(); B_Iterator !=
vec_ptr.end(); B_Iterator++ )
{
delete( vec_ptr[QCop_Iterator] );

This line should probably read

delete *B_Iterator;

?
}
}
}

if i have declared and instantiated the " ptr " in the function init()
like above and after pushing that into the vector of type B* will the
object be remain even in the shutdown() function....??

Differenciate between the pointer and the object pointed to. The
pointer just holds an address to the object you created. This *address
value* is copied into the vector. So while the pointer 'ptr' will go out
of scope by the end of 'init', the object it points to is not affected
at all by this. In this case, the objects will never go out of scope,
because you dynamically allocated them. Thus, you have to manually
delete them (as you attempted in the 'shutdown' function).
please tell me the scope of that pointer ptr and the vector that
containing the ptr.

The vector will live as long as the object of type A exists, which
contains this vector. In other words, the vector will exist in your
'init' function and it will be the same vector in your 'shutdown'
function.

By the way, instead of using 'init' and 'destroy', you might want to
use constructors and destructors.

hth
 
F

Forest

Yes, the objects are kept in the vector. The scope of *ptr* is the
function *init()*, but after *push_back()* is called, the value of
pointer is COPIED and it is kept in the vector. The scope of the vector
is determined by the lifecycle of the instance of class A. When A's
constructor is called, the vector is established; and when A's
destructor is called, the vector is destoried.
 

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,756
Messages
2,569,540
Members
45,025
Latest member
KetoRushACVFitness

Latest Threads

Top