I am trying to get into C++ and I encountered few issues. My two classes look like that:
#include "Account.h"
class Program
{
public:
    Program(void);
    ~Program(void);
    void SetAccount(Account account);
};
#include "Program.h"
class Account
{
public:
    Program *program;
    Account(void);
    ~Account(void);
};
By passing an instance of the Account class to SetAccount function am I making a copy of it or I am passing it as a reference? As I understand I am making a copy of it, but I wanted to be sure. To pass it as a reference I need to use pointers, right?
Another issue I encountered is with my Account class. Lets say it needs to have Program class reference at some point. The problem is that both Program and Account classes have lines "#include" to each other so it causes circular dependency. Any ideas how to solve it?
Edited
My classes now looks like that:
#include "Account.h"
class Program
{
public:
    Program();
    ~Program();
    void SetAccount(Account account);
};
class Program;
class Account
{
public:
    Program *program;
    Account();
    ~Account();
};
When I try to initialize *program in Account constructor I get "incomplete type is not allowed" and "'Program' : no appropriate default constructor available".
 
     
     
     
     
    