“CObject::operator =”: 无法访问 private 成员(在“CObject”类中声明)

有这么头文件,有这些类:

//#include <afxtempl.h>

class CDocNode;

//每个文档的信息
struct DocInfo
{
CDocNode *m_pDocNode; //该文档的节点
CString m_sDocName; //文档名
CString m_sClsName; //该文档所属的类别
double m_dSimRatio; //该文档在所有文档类别中的相似比例
};
//用来记录文档向量中每一维特征的权重
struct sWeightNode
{
int s_idxWord; //特征的ID
short s_tfi; //特征在文档中出现的频次
double s_dWeight; //特征权重

};

class CDocNode:CObject
{
public:
CDocNode(void);
~CDocNode(void);
long m_idxDoc; //文档标识
CString m_strDocName; //文档名称
int m_nAllocLen; //文档向量的长度,即数组m_sWeightSet的长度
sWeightNode *m_sWeightSet; //词权值列表
short m_nClassNum; //代表训练文档的类别总数
double *m_pResults; //文档与每个类别的相识度
short m_nCataID; //代表当前文档的所属类别
static sWeightNode *m_pTempLen; //表示生成文档向量时需要的一块临时内存
static int m_nAllocTempLen; //临时内存的大小
private:
static char m_pSentence[MAX_PATH*10];
};

class CCatalogNode
{
public:
CCatalogNode();
~CCatalogNode();
CCatalogNode(const CCatalogNode& x);
//扫描路径pPath下的所有文档,将其添加到当前类节点中
long ScanDirectory(CString);
public:
short m_idxCata; //当前类别的标识
CString m_strCataName; //类别名称
CString m_strDirName; //所在的目录名
long m_lTotalWordNum; //该类别的特征总数
private:
CList<CDocNode,CDocNode&> m_lstDocList; //当前类别的文档节点列表
};

class CCatalogList
{
public:
CCatalogList(void);
~CCatalogList(void);

private:
static int m_nSaveMode; //0 保存文档向量, 1 不保存文档向量
CList<CCatalogNode,CCatalogNode&> m_lstCatalogList;

};

各路大神,应该怎么改,才能实现?

第1个回答  2013-12-17
如果楼主非要这么玩的话,个人认为最猥琐且最简单的改法是在public中添加指向该private成员变量的双常量指针(如 const char* const pContent):这样改动最小,且保证不会改变原private成员变量的属性