I have read some articles concerning this topic but still have problems to compile my own code.

I have class A:

```
class A
{
public:
     List<int> data;  
     A(){} 
     A(A&){}
     A& operator= (const A& a)
     {
         // copy the data from a to data  
     }       
};

```

Class B will call class A:

```
class B
{
public:
    A makeA()
    {
        A a;
        return a;
    }
    A getA()
    {
        A a = makeA();
        return a;
    }
};

```

When I compile my code with g++ under Linux, I got:

no matching function for call to 'A::A(A)'. 

It seems that the compiler has simply ignored the assignment operation. Can you help me out of this?