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模板参数的问题,真的希望你能看看。

解决方案 »

  1.   

    h
    #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;
    }
      

  2.   

    decdim(&ddim,&sdim);
    decdim(CArray *pddim,CArray *psdim)
    {
    pddim->…………}
      

  3.   

    #include <afxtempl.h>
    直接这样声明就可以了。
    decdim(CArray<CPoint,CPoint> &ddim, CArray<CPoint,CPoint> sdim);嫌麻烦的话
    typedef CArray<CPoint,CPoint> CPtArray;

    #define CPtArray (CArray<CPoint,CPoint>)
      

  4.   

    decdim(CArray<CPoint,CPoint> &ddim, CArray<CPoint,CPoint> sdim);
      

  5.   

    非常感谢各位的答复!今天才有机会上网,马上试了试。可是,编译时还是出现下面的错误:
    正在编译...
    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 已跳过还请各位大哥给予再指教!
      

  6.   

    刚才又试了一下,如果将声明里的decdim(CArray<CPoint,CPoint> &ddim, CArray<CPoint,CPoint> sdim);
    改为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 已跳过