CArray<CPoint,CPoint> Sarray;
CArray<CPoint,CPoint> Darray;
.........
Sarray.add......
Darray.add.....
现在,想将Darray里和Sarray相同的元素删除。想设计一个函数来进行这项工作,想将这个函数声明为:decdim(CArray &ddim,CArray sdim);然后就可以如下使用这个函数:decdim(Darray,Sarray);
事实是,我却不能这样作,因为这样的程序无法通过编译。
实在不知道如何作,没办法的情况下,这样解决的问题:
新增加一个非常简单的类,比如为tmpa,在这个类的声明中,有唯一成员:
CArrary<CPoint,CPoint> myarray;
然后再在程序里产生tmpa的实例:
tmpa Sarray;
tmpa Darray;
然后,声明一个函数:
decdim(tmpa &ddim,tmpa sdim)
{
......
ddim.myarray.......
sdim.myarray....
}
.....
最后可以:
decdim(Darray,Sarray);
这样子虽然解决了问题。可觉得非常难过。
万望哪位高手能给指条明路,给个正确的方法。
还有,因水平太差,也许没说清楚,见笑了。
哦,想起来了,也许就是一个如何解决向一个函数传递CArray模板参数的问题,真的希望你能看看。
CArray<CPoint,CPoint> Darray;
.........
Sarray.add......
Darray.add.....
现在,想将Darray里和Sarray相同的元素删除。想设计一个函数来进行这项工作,想将这个函数声明为:decdim(CArray &ddim,CArray sdim);然后就可以如下使用这个函数:decdim(Darray,Sarray);
事实是,我却不能这样作,因为这样的程序无法通过编译。
实在不知道如何作,没办法的情况下,这样解决的问题:
新增加一个非常简单的类,比如为tmpa,在这个类的声明中,有唯一成员:
CArrary<CPoint,CPoint> myarray;
然后再在程序里产生tmpa的实例:
tmpa Sarray;
tmpa Darray;
然后,声明一个函数:
decdim(tmpa &ddim,tmpa sdim)
{
......
ddim.myarray.......
sdim.myarray....
}
.....
最后可以:
decdim(Darray,Sarray);
这样子虽然解决了问题。可觉得非常难过。
万望哪位高手能给指条明路,给个正确的方法。
还有,因水平太差,也许没说清楚,见笑了。
哦,想起来了,也许就是一个如何解决向一个函数传递CArray模板参数的问题,真的希望你能看看。
解决方案 »
- 如何查看Windows.h所包含的函数?
- 探讨一个界面框架设计的问题。
- 想试试windbg,但是不会产生dmp文件,如何让程序崩溃的时候产生dmp文件
- 给特定格式文件添加图标
- 高分求解:add files to project 后编译问题
- 请问:如何把COLORREF 颜色 转为 RGB 颜色 ?
- 如何最小化或者隐藏一个 system modal dialog
- 关于bind(),出错了
- 问个问题:Microsoft Access中显示表格的那种视图是怎样做出来的?用MFC中的ListView可以做出来么?
- vc中的对atl生成的组件的调用问题.
- 散散分!!!Solarsoft TV.net V0.2(试用)本软件为播放网络电视软件欢迎下载
- 如何写触发器?
#include <afxtempl.h>class ag
{
public:
CArray<CPoint,CPoint> myarray;
ag();
virtual ~ag();
bool decdim(CArray<CPoint,CPoint> ddim, CArray<CPoint,CPoint> sdim);
};cppbool ag::decdim(CArray<CPoint,CPoint> ddim, CArray<CPoint,CPoint> sdim)
{
return true;
}
decdim(CArray *pddim,CArray *psdim)
{
pddim->…………}
直接这样声明就可以了。
decdim(CArray<CPoint,CPoint> &ddim, CArray<CPoint,CPoint> sdim);嫌麻烦的话
typedef CArray<CPoint,CPoint> CPtArray;
或
#define CPtArray (CArray<CPoint,CPoint>)
正在编译...
arrayDlg.cpp
d:\array\arrayDlg.cpp(55) : error C2664: “CarrayDlg::decdim” : 不能将参数 2 从“CArray<TYPE,ARG_TYPE>”转换为“CArray<TYPE,ARG_TYPE>”
with
[
TYPE=CPoint,
ARG_TYPE=CPoint
]
and
[
TYPE=CPoint,
ARG_TYPE=CPoint
]
没有可用于 class“CArray<TYPE,ARG_TYPE>”的复制构造函数,或构造函数试图执行到非 __gc 引用的非法转换
with
[
TYPE=CPoint,
ARG_TYPE=CPoint
]生成日志保存在“file://d:\array\Debug\BuildLog.htm”中
array - 1 错误,0 警告---------------------- 完成 --------------------- 生成: 0 已成功, 1 已失败, 0 已跳过还请各位大哥给予再指教!
改为decdim(CArray<CPoint,CPoint> &ddim, CArray<CPoint,CPoint> &sdim);
后,不出现刚才的错误,但又出现这个错误:
正在编译...
arrayDlg.cpp
正在生成代码...
正在跳过...(未检测到相关更改)
array.cpp
正在链接...
arrayDlg.obj : error LNK2019: 无法解析的外部符号 "protected: int __thiscall CarrayDlg::decdim(class CArray<class CPoint,class CPoint> &,class CArray<class CPoint,class CPoint> &)" (?decdim@CarrayDlg@@IAEHAAV?$CArray@VCPoint@@V1@@@0@Z) ,该符号在函数 "protected: virtual int __thiscall CarrayDlg::OnInitDialog(void)" (?OnInitDialog@CarrayDlg@@MAEHXZ) 中被引用
Debug/array.exe : fatal error LNK1120: 1 个无法解析的外部命令生成日志保存在“file://d:\cqlhjdate\lhjprogram\six-2\array\Debug\BuildLog.htm”中
array - 2 错误,0 警告
---------------------- 完成 --------------------- 生成: 0 已成功, 1 已失败, 0 已跳过