The problem is in this line.
CStringArray LastUsedDes = cqueue.GetArray();
Even if you return a reference to CStringArrayin a function GetArray(), a copy of the array is executed in the line above. CStringArrayIt does not define the copy constructor itself, and it is obtained from CObject, which has a private copy constructor.
Change the line to
CStringArray& LastUsedDes = cqueue.GetArray();
, LastUsedDes CStringArray, , , , .
, Append .
CStringArray LastUsedDes;
LastUsedDes.Append( cqueue.GetArray() );