<p>I have a project where multiple developers are using a copy of the same windows Virtual PC image (W2K3 SE SP2).  Because our solution is tied to the machine-name (less than ideal, i know) all of the developers have the same machine name.</p>

<p>We use a VPN to connect to a remote system, upon connection we get the "Windows Error: A duplicate name exists on the network" error.</p>

<p>Since all development is happening locally, we're not dependent on other machines connecting to us -- only outbound connections.</p>

<p>I know it's best practice to change the machine name, but what's the reasoning behind this?  What impact would this have?</p>

If you are able to use a reference, you can retain the same use syntax. However, your reference has to be initialised straight away in the constructor, so your ctor absolutely must be defined out-of-line. (You will also need to free the object in the destructor too.)
```
```
// bar.h
class foo;

class bar {
    foo& foo_;

public:
    bar();
    ~bar();
};

// bar.cc
bar::bar() : foo_(*new foo)
{
    // ...
}

bar::~bar()
{
    // ...
    delete &foo_;
}
```
```
Your mileage may vary. :-)