Adapter design pattern I am referring to the book Design Patterns For Dummies to learn about design patterns.  I wrote an adapter design pattern, as mentioned in the book.  Is it proper or does it need some modification?

#include&lt;iostream&gt;
#include&lt;sstream&gt;

using namespace std;

class AceInterface
{
public:
    virtual void setName(string n) = 0;
    virtual string getName() = 0;
};

class Aceclass : public AceInterface
{ 
    string name;
public:
    void setName(string n){
        name = n;
    }
    string getName() {
        return name;
    }
};

class AcmeInterface
{
public:
    virtual void setFirstName(string fn) = 0;
    virtual void setLastName(string ln) = 0;
    virtual string getFirstName() = 0;
    virtual string getLastName() = 0;
};

class Acmeclass :public AcmeInterface
{
    string First_name;
    string Last_name;
public:
    void setFirstName(string fn) {
        First_name = fn;
    }
    void setLastName(string ln) {
        Last_name = ln;
    }
    string getFirstName(){
        return First_name;
    }
    string getLastName(){
        return Last_name;
    }
};

class AcetoAcmeAdapter:public AcmeInterface
{
    Aceclass aceObject;
    string First_name;
    string Last_name;
public:
    AcetoAcmeAdapter(Aceclass a) {
        aceObject = a;
        istringstream iss(aceObject.getName());
        iss &gt;&gt; First_name ;
        iss &gt;&gt; Last_name;
    }
    void setFirstName(string fn) {
        First_name = fn;
    }
    void setLastName(string ln) {
        Last_name = ln;
    }
    string getFirstName(){
        return First_name;
    }
    string getLastName(){
        return Last_name;
    }
};

int main()
{
    Aceclass aceobj;

    aceobj.setName("Mohandas Gandhi");

    cout &lt;&lt; "name from aceobj :" &lt;&lt; aceobj.getName() &lt;&lt;endl;

    AcetoAcmeAdapter ace2acme(aceobj);

    cout &lt;&lt; "First_name from ace2acme :" &lt;&lt; ace2acme.getFirstName() &lt;&lt; endl;
    cout &lt;&lt; "Last_name from ace2acme :" &lt;&lt; ace2acme.getLastName() &lt;&lt; endl;

    return 0;
}
Minor things:


Don't use using namespace std. Read
this.
When you are naming variables, keep it consistent. Either stick with
camelCase or underscore.
For the inline functions, keep it on one line. It's easier to read.

void setName(string n){ name = n; }
string getName() { return name; }

I would suggest, anything over two lines, define outside of class.
Particularly the AcetoAcmeAdapter constructor.