class MyClass : public CObject
{
public:
MyClass();
private:
CStringArray m_myArray;
};
causes error c2248
What’s wrong with this ?
I think it’s related to the fact that CStringArray and MyClass both derive from CObject.
Legacy class derived from CObject currently uses CustomArray it just seems wrong to me so I would like to replace it by CStringArray.
Microsoft compiler error C2248 means “Members of a derived class cannot access private members of a base class.”
I can only assume you’re trying to directly reference
MyClass::m_myArrayfrom somewhere in your code, without using a public accessor function.Update
The real answer is that the problem is caused by the copy-constructor for MyClass, attempting to copy m_myArray, but it can’t, because CObject derived classes aren’t copyable by default. The solution would be to write a copy constructor yourself, and rather than attempt to copy the array, copy the contents one at a time, from the source array to the destination array. Either that or use
std::vector(which you should be doing anyway, as MFC containers are horrible).