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

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)

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

how to objects being passed as arguments .. does it create a duplicate copy or make a new object and work on it or it will work on real copy ?

Abhinisha if you have a specific question please start your own thread. Our member rules state this:
Do not hijack old forum threads by posting a new question as a reply to an old one.
This thread is 9 years old. I doubt they're still looking for answers.

This article has been dead for over six months. Start a new discussion instead.