源代码如下:
struct Point3d
{ CString PointName;
CString Code;
double X;
double Y;
double Z;
Point3d()
{
PointName=_T("");
Code=_T("");
X=0.0;
Y=0.0;
Z=0.0;
}
Point3d(Point3d &point)
{
*this = point;
}
Point3d & operator = (Point3d& point)
{
PointName=point.PointName;
Code=point.Code;
X=point.X;
Y=point.Y;
Z=point.Z;
return *this;
}
};typedef CArray<Point3d,Point3d &> CPoint3dArray;错误如下:
1>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxtempl.h(267) : error C2248: “CObject::CObject”: 无法访问 private 成员(在“CObject”类中声明)
1> c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afx.h(561) : 参见“CObject::CObject”的声明
1> c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afx.h(532) : 参见“CObject”的声明
1> 此诊断出现在编译器生成的函数“CArray<TYPE,ARG_TYPE>::CArray(const CArray<TYPE,ARG_TYPE> &)”中
1> with
1> [
1> TYPE=Point3d,
1> ARG_TYPE=Point3d &
1> ]
struct Point3d
{ CString PointName;
CString Code;
double X;
double Y;
double Z;
Point3d()
{
PointName=_T("");
Code=_T("");
X=0.0;
Y=0.0;
Z=0.0;
}
Point3d(Point3d &point)
{
*this = point;
}
Point3d & operator = (Point3d& point)
{
PointName=point.PointName;
Code=point.Code;
X=point.X;
Y=point.Y;
Z=point.Z;
return *this;
}
};typedef CArray<Point3d,Point3d &> CPoint3dArray;错误如下:
1>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxtempl.h(267) : error C2248: “CObject::CObject”: 无法访问 private 成员(在“CObject”类中声明)
1> c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afx.h(561) : 参见“CObject::CObject”的声明
1> c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afx.h(532) : 参见“CObject”的声明
1> 此诊断出现在编译器生成的函数“CArray<TYPE,ARG_TYPE>::CArray(const CArray<TYPE,ARG_TYPE> &)”中
1> with
1> [
1> TYPE=Point3d,
1> ARG_TYPE=Point3d &
1> ]
解决方案 »
- wininet模拟网页登陆,为什么忽然不成功了?
- vc++ 创建windows 窗体应用程序提示出错:库没有注册
- 为什么CStdioFile文件操作会失败
- com下使用stl问题多么??boost能否用在com对象中
- 如何实现编辑框对鼠标左键双击事件的响应?
- 怎样用vc来完成[金山游侠]的,输入值在内存中搜索的功能!
- 那位仁兄知道那里有 COM+(服务器、客户)安装配置方面的详细资料或书籍,谢谢!
- 为什么我的数据集会有这样错误?
- 状态栏的位置问题
- 怎样才能使用MODEM的AT指令?直接向端口写指令字符串就可以了吗?
- 跪求VC ADO技术_ConnectionPtr Open函数的解释
- 如何改变动态创建的CButton的颜色和字体颜色
至于为什么错误提示已经很清楚了,CArray的根基类是cobjct,这个类的拷贝构造和operator = 是private的,你在上层间接调用CArray的拷贝构造或operator = 会调用基类的实现,而基类的实现是private,所以
是不是将传值改为传引用就行了?
使用到的CPoint3dArray对象的函数有一个,我改成了传引用了,但是依然报错
bool FindPoint(CPoint3dArray &PtArray,Point3d &Point)
另外,定义有一个对话框类中的成员CPoint3dArray m_ObsPointArray;
CPoint3dArray array = m_ObsPointArray;这样的代码就不行
由于代码中有一个语句也出现了传值的错误,所以导致了相同的问题,我还误以为是CArray存在错误
ReadKnownPoint(CStdioFile KPFile)
改为ReadKnownPoint(CStdioFile &KPFile)就通过了
基本功不扎实啊,汗!