i made an object and i want to pass the opject to other class ? using c++

i have 5 files
main.cpp
game.h    game .cpp
level.h   level.cpp
--------------------------------
so i made an object on the main.cpp for the level class  , and i want to pass the level object to the game.cpp so i can use the data that is stored in the level object

thanks

if you dont understand please say what you dont understand so i will try and explane more

thanks
mgtm3Asked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
Let_Me_BeConnect With a Mentor Commented:
OK, the easiest way to access a variable from different file is to make it global and access it using the extern directive.
//main.cpp
#include "level.h"
 
Level level;
 
int main()
{
    do_something();
}
 
//other.cpp
#include "level.h"
 
extern Level level;
 
void do_something()
{
    level.x = 10;
}

Open in new window

0
 
Let_Me_BeCommented:
Well, you can pass it same way you pass any other variable. Can you please describe what exactly are you having problem with?
0
 
mgtm3Author Commented:



lets say this
level.cpp
{
class level{
public:
int x;
 
};
}
////////////////////////////////////////
main.cpp{
level Level;
Level.x=5;
}
///////////////////////////////////////////////////////////
game.cpp{
// i want to pass the Level object from the main.cpp to here
how can i do this ?
}

Open in new window

0
Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
mgtm3Author Commented:
its not working :(

i get a new object when i write
Level level;
in the new file
0
 
evilrixConnect With a Mentor Senior Software Engineer (Avast)Commented:
Pass level by reference into the constructor of Game and assign it to a member of game, which will be a reference to level. From this point on the game object will have a reference to level.

Note, there is no need (nor is it good practice) to have level as a file scoped object as shown above.
// Level class
class Level
{
};
 
// Game class
class Game
{
public:
   Game(Level & l) : l_(l) {} // Pass level into the constructor of game as a reference
 
private:
   Level & l_; // A reference to level as a member of game, initialised in the constructor
}
 
int main()
{
   Level l; // Create level
   Game g(l); // Create game and pass it level
}

Open in new window

0
 
Let_Me_BeCommented:
Ok, i would again need a clarification what you are trying to achieve. You don't want to create a new object, but then I don't understand what object you want to access.

I general, if you want to share variable between several files, then you have several options.

First you can use a global variable which is then accessed by extern directive.

You can use a global static variable and an accessor function that returns reference to this variable and then use this function to access the variable.

And of course you can pass as a parameter of a call or constructor (but that doesn't seem to be what you are trying to achieve).

From what you have written, you may be interested in the Singleton pattern: http://en.wikipedia.org/wiki/Singleton_pattern
0
 
mgtm3Author Commented:
i made it work thanks :)
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.