954,483 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

C++ Object Pointers Problem

Hi,

Please see the code below.

void Allocate( char* s )
{
s = (char*)malloc( 100 );
}

int main( )
{
char* s = NULL;
Allocate( s );
strcpy( s,"Test");/*I know that this will fail. b'coz I still have a NULL pointer in s. Initially s was pointing to NULL, and from the function Allocate 100 bytes of memory was allocated in some memory location, and address of s was made to point to that location. But inside the main, s is still pointing to NULL. Pl. correct me if I am wrong.*/

}


Now my question is

void Allocate( Base* s )
{
s = new Base;
}

int main( )
{
Base* obj = NULL;
Allocate( obj );
obj->some_member = 20; // this works...

}


<< moderator edit: added [code][/code] tags >>

So I assume, object pointers are passed to functions in a different way compared to primitive type pointers. Can anyone pl. comment on this.

SpS
Posting Pro
599 posts since Aug 2005
Reputation Points: 70
Solved Threads: 32
 

All passing is by value unless otherwise specified. As you want the changes reflected back to the calling function you will need to pass either a reference to a pointer a char*& or a pointer to a pointer a char** or alternatively return a pointer by value rather than void.
object pointers and primitive type pointers behave exactly the same. Your code is wrong its that simple.

Stoned_coder
Junior Poster
164 posts since Jul 2005
Reputation Points: 19
Solved Threads: 5
 

(In other words, don't be confused by the * in char *, treat char * like int and it will be clear...)

winbatch
Posting Pro in Training
466 posts since Feb 2005
Reputation Points: 68
Solved Threads: 18
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You