The error message you get means that CStringArray does not have an assignment operator (operator=).
CList seems to be attempting to use such an assignment (possibly to copy elements around) and therefore you get a compilation error.
As suggested in comments, a possible solution is to use standard C++ containers instead. This is recommended anyway since MFC's container classes are quite ancient and not necessarily up-to-date with modern C++ features.
Since CList lists behave like doubly-linked lists, you can consider to use std::list for it. And for a "sequential" (array-like) container it is recommeneded to use std::vector (or std::array for fixed sized ones).
#include <list>
#include <vector>
//...
std::list<std::vector<CString>> aListOfStringArrays;
Note that a linked-list is less cache-friendly that an array-like sequential containers and therefore usually less efficient. So you can even consider to use std::vector instead of the outer std::list:
std::vector<std::vector<CString>> anArrayOfStringArrays;
A side note:
If you want to introduce types for the list/array, instead of typedef you can use the more modern C++ type alias, e.g.:
using CListOfStringArrays = std::list<std::vector<CString>>;
CStringArrayderives fromCObject, it's not copyable. ApparentlyCListrequires its element type to be copyable. The function in the error message is the copy assignment operator.std::vector<CString>andstd::vector<std::vector<CString>>. MFC collection classes are ancient, and rather poorly designed, at least by modern standards.CString, the MFC container classes are obsolete. Use one of the standard C++ container classes.