i made a mistake writing the code above. it has to look like this: void COtherClass::FirstFunction(CArray<CSomeClass, CSomeClass&>* pSomeClassArray) { .... } instead of this: void COtherClass::FirstFunction(CArray<CSomeClass, CSomeClass&>& pSomeClassArray) { .... } the method has a pointer parameter instead of a reference parameter. i guess CSomeClass does not implement a copy constructor, i have not added anything in the constructor neither write a new constructor in that class. :confused: i use the class the way it is as i show you before, and it seems to work. but i want to know how to implement a copy constructor, can you please show me how to do it? thanks in advance :-D