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

passing objects as arguments

Hi

I am attempting to pass a reference to an object from one function to another, is this even possible, if so what is the syntax this is an example of what I want:

class SomeClass {
   public:
      int a = 100;
};

void second_function(SomeClass & ref_to_classobj)
{
   std::cout << ref_to_classobj.a << endl;
}

int main()
{
   SomeClass classobj;
   second_function(classobj);
   return 0;
}


Obviously the functions and classes I am using are a lot more complicated the class itself in the program I am writing takes about 5 seconds to construct due to it dealing and containing a huge amount of data. I don't want to have to reinitialise this class everytime I use it I want to just be able to point a reference to it. Does anyone know how to do this?

I have tried the method above, also:

void foo(SomeClass &reference)
void foo(SomeClass *reference)

and about 10 other variations on this, the usual error message I get is:

no matching function for call to `keyword_cache::find_keyword(const char[6])'

Any help will be greatly appreciated.

Thanks

Ben

liliafan
Junior Poster
117 posts since Apr 2004
Reputation Points: 66
Solved Threads: 3
 

What you have written as an example looks correct. Your error message suggests a different issue at work? Perhaps the function find_keyword does not take a const string?

find_keyword( char* keyword )

if you said:

find_keyword( "123456" );

you would likely get the error you mention, because "123456" is a six char const array. (heck, maybe its 7 with a trailing null, but you get the idea)

Chainsaw
Posting Pro in Training
436 posts since Jun 2004
Reputation Points: 36
Solved Threads: 11
 
What you have written as an example looks correct. Your error message suggests a different issue at work? Perhaps the function find_keyword does not take a const string?

You are right :o)

The actual call I was making was

void test_class(keyword_cache &test)
{
   test.find_keyword("black");
}


It was translating the "black" at a char array not a string.

Thanks for the help.

Ben

liliafan
Junior Poster
117 posts since Apr 2004
Reputation Points: 66
Solved Threads: 3
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You