写了几个文件 都对操作符 = 重载 构造拷贝,还是出错
//data.h
#ifndef _DATA_H_
#define _DATA_H_
class CData
{
public:
CData()
{
a=_T("");
b=_T("");
c=_T("");
d=_T("");
e=_T("");
f=_T("");
g=_T("");
}
CData(CString Da,CString Db,CString Dc,CString Dd,CString De,CString Df,CString Dg)
{
a=Da;
b=Db;
c=Dc;
d=Dd;
e=De;
f=Df;
g=Dg;
}
CData (const CData& _data)
{
this->a=_data.a;
this->b=_data.b;
this->c=_data.c;
this->d=_data.d;
this->e=_data.e;
this->f=_data.f;
this->g=_data.g;
}
CData& CData::operator=(const CData _data)
{
this->a= _data.a;
this->b= _data.b;
this->c= _data.c;
this->d= _data.d;
this->e= _data.e;
this->f= _data.f;
this->g= _data.g;
return *this;
}
CString a;
CString b;
CString c;
CString d;
CString e;
CString f;
CString g;
};
#endif
//CCDemoRecord.h
```#pragma once
#include "data.h"
typedef CArray<CData,CData&>
CDemoRecord;class CCDemoRecord
{
public:
CCDemoRecord(void);
~CCDemoRecord(void);
CCDemoRecord(const CCDemoRecord& _data)
{
this->record.a=_data.record.a;
this->record.b=_data.record.b;
this->record.c=_data.record.c;
this->record.d=_data.record.d;
this->record.e=_data.record.e;
this->record.f=_data.record.f;
this->record.g=_data.record.g;
}
CCDemoRecord& CCDemoRecord::operator=(const CCDemoRecord _data)
{
this->record.a=_data.record.a;
this->record.b=_data.record.b;
this->record.c=_data.record.c;
this->record.d=_data.record.d;
this->record.e=_data.record.e;
this->record.f=_data.record.f;
this->record.g=_data.record.g;
return *this;
}
CData record;
};
#pragma once
#include<afxtempl.h>
#include "data.h"
typedef CArray<CData,CData&> CDemoRecord;
extern CDemoRecord g_sets; //全局变量声明
extern CDemoRecord g_clust; //簇
extern CDemoRecord g_center; //中心点
extern CDemoRecord g_similar; //重复数据
class CDataPro
{
public:
CDataPro(void);
~CDataPro(void);
CDemoRecord InitCenter(CArray<CData,CData&> g_sets); //初始中心点
//CArray<data ,data&> ArrayData; //data模板数组
};
#include "stdafx.h"
#include "DataPro.h"
#include "CDemoRecord.h"
typedef CArray<CData,CData&> CDemoRecord;
CDataPro::CDataPro(void)
{
}
CDataPro::~CDataPro(void)
{
}
CDemoRecord InitCenter(CArray<CData,CData&> g_sets) //初始中心点
{
return g_center;
}
现在要写这个初始化中心点的函数, 报错
1>c:\program files (x86)\microsoft visual studio 10.0\vc\atlmfc\include\afxtempl.h(262): error C2248: “CObject::CObject”: 无法访问 private 成员(在“CObject”类中声明)
1> c:\program files (x86)\microsoft visual studio 10.0\vc\atlmfc\include\afx.h(534) : 参见“CObject::CObject”的声明
1> c:\program files (x86)\microsoft visual studio 10.0\vc\atlmfc\include\afx.h(509) : 参见“CObject”的声明
1> 此诊断出现在编译器生成的函数“CArray::CArray(const CArray &)”中
1> with
1> [
1> TYPE=CData,
1> ARG_TYPE=CData &
1> ]
1>
1>生成失败。
1>
1>已用时间 00:00:00.14
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========