void SampleBaseClass::Serialize(CArchive& ar)
{
// Serialize base class data first
CObject::Serialize(ar);
// Serialize my data now
if (ar.IsStoring())
{
ar << m_sPersonIdentificationNumber; //Flags the critical issue here
}
else
{
......
}
}
Вот объявление SampleBaseClass
class SampleBaseClass : public CObject
{
DECLARE_SERIAL(SampleBaseClass)
// Constructors / Destructor
public:
SampleBaseClass();
SampleBaseClass(const SampleBaseClass& cpy);
SampleBaseClass& operator =(const SampleBaseClass& cpy);
virtual ~SampleBaseClass();
// Attributes
public:
double m_dPersonId;
CString m_sPersonIdentificationNumber;// Operations
public:
virtual void Serialize(CArchive& ar);
protected:
void Copy(const SampleBaseClass& cpy);
};
Кроме того, у меня есть<<«оператор перегружен. Ниже приведена перегруженная функция
template< typename BaseType, class StringTraits >
CArchive& CArchive::operator<<(const ATL::CStringT<BaseType, StringTraits>& str)
{
AfxWriteStringLength(*this, str.GetLength(), sizeof(BaseType) == sizeof(wchar_t));
Write(str, str.GetLength()*sizeof(BaseType));
return *this;
}
Как я могу решить эту проблему без значительного изменения дизайна?
Задача ещё не решена.
Других решений пока нет …