请问大侠,如何在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变量地址做入参,解决上述问题,非常感谢!
我在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变量地址做入参,解决上述问题,非常感谢!
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)