请问大侠,如何在vc使用的如何使用模板类list变量地址做函数入参,才能不导致API函数错误?
我在Stdafx.h中定义了如下数据类型
#include <list>
#include <operator>
typedef list<double> T_LIST;
在视图类中定义成员变量 
T_LIST m_valueList1;
T_LIST m_valueList2;
CScope m_staticScope;
同时定义了一个用于画多个曲线显示的类Scope,在Scope中定义了一个画曲线的函数void Scope::drawcurve(int arcIndex,T_LIST valueList)
{
   ;
}
及赋值函数
void Scope::addValue(double dValue,T_LIST valueList)
{
   ;
}
并在在视图类的ontimer()函数中调用drawcurve函数,并以m_valueList1,m_valueList2做入参
ontimer(int nEnventId)
{
    double dTime= timegettime()/1000.0
    double dvalue1,dvalue2,dvalue3;
    switch(nEnventId)
    {
     case 1:
        dvalue1= 1000*sin(80*dTime)-50;
        m_staticScope.addValue(dvalue1,m_valueList1);break; 
         m_staticScope.drawcurve(1,m_valueList1);break;  
     case 2:  
        dvalue2= 1000*sin(80*dTime+50)-50;
        m_staticScope.addValue(dvalue2,m_valueList2);break;    
        m_staticScope.drawcurve(2,m_valueList2);break;
     case 3:
        dvalue3= 1000*sin(80*dTime+100)-50;
        m_staticScope.addValue(dvalue3,m_valueList3);break; 
        m_staticScope.drawcurve(3,m_valueList3);break;
     default:
        break;
     }}
用bindcheck检查说入参传入的是非法内存地址,不合法,但是可以编译通过,不过会引起函数功能不正常。果然,显示器可以显示不同角度的三个脉冲曲线,但曲线显示不正常。
而如下定义变量
T_LIST* valueList
是错误的,请问大侠应该如何使用模板类list变量地址做入参,解决上述问题,非常感谢!

解决方案 »

  1.   

    不清楚下面两个函数到底干了什么:
    void Scope::drawcurve(int arcIndex,T_LIST valueList) void Scope::addValue(double dValue,T_LIST valueList) 如果valueList还要传出,改成
    void Scope::drawcurve(int arcIndex,T_LIST& valueList) void Scope::addValue(double dValue,T_LIST& valueList) 
      

  2.   

    用T_LIST会导致指针悬挂,当然不能直接用。直接用必须满足这个类有拷贝构造函数,且必须有operator=算子,显然不满足至于T_LIST*,没有理由不可以,不成功只能说你用错了,你不说具体错误,大概神仙也不知道你错在哪