Q:

How to pass an array of objects as an argument in a constructor, then copy the passed array to another one (still in the constructor)

I figured out I'd rather just show the code for this one.
So I have a class named Game right here: which contains levels. As you can see, the public constructor needs an array of Lvl type objects.
class Game {
    private:
        Lvl *_levels[10];
    public:
        Game(Lvl levels[]){
            Lvl* _levels=levels;
            for(int i=0; i<10; i++){
                //_levels[i]=levels[i];

                cout << endl << "i : " << levels[i].get_stage();  // DOESN'T WORK !! (compiles though)
            }
        }
};

And in the main, I have the following : 
int main(){
    Lvl* lvls[10]={};

    for(int i=0; i<10; i++){
        lvls[i]=new Lvl(0, 1, 1+i, false); // get_stage() returns the 3rd parameter
        cout << lvls[i]->get_stage();  //THIS ACTUALLY WORKS AND RETURNS THE CORRECT VARIABLE!
    }
    Game game=Game(*lvls);
}

So, in the main function, the array of Lvl objects works perfectly but for some reason, when I try to pass it as an argument to create a Game object, I can't use the parameter in the constructor... If I try get_stage(), it will return random numbers! Maybe because the array wasn't passed properly?
Anyways, guys, this is my first post on this site and I hope you'd be able to help me. maybe I'll stick around then :)
If something is unclear, feel free to ask.

A:

In your main function, you have an array of Lvl pointers called lvls. When you pass the array to the constructor using,
Game game = Game(*lvls);

You're actually dereferencing a pointer pointing to the first pointer in lvls which happens to be a pointer to your first Lvl object. So your levels in the Constructor actually has the address of this first Lvl object and not the address of the lvls array. Since your Constructor declaration is
Game(Lvl levels[]);

levels is declared as a Lvl pointer and this makes the whole thing legal. The compiler does not throw any error.
If you wish to do the whole thing using just pointers, this is one solution,
class Game {
    private:
        Lvl *_levels[10];
    public:
        Game(Lvl* levels[10]){
            for(int i=0; i<10; i++) {
                _levels[i] = levels[i];
                cout << endl << "i : " << levels[i]->get_stage();
            }
        }
};

And then construct Game using,
Game game(lvls);

