一个map输入输出的问题,很奇怪的,请高手来分析一下!!(50)
//transbranch.cpp
struct Translinepara{
CORBA::Float ratedmva;
CORBA::Float ratedvol1;
CORBA::Float ratedvol2;
CORBA::Float rt;
CORBA::Float xt;
CORBA::Float k;
};
typedef std::map<unsigned short,Translinepara> TranslineMap;
//-------------------
static TranslineMap trans_map;
extern "C"
int Transline_get( unsigned short id,
const char* attr,
CORBA::Float value)
{
TranslineMap::iterator pos=trans_map.find(id);
if(pos==trans_map.end())
return -1;
if(strcmp(attr,"ratedmva")==0){
value=pos->second.ratedmva;
}else if(strcmp(attr,"ratedvol1")==0){
value=pos->second.ratedvol1;
}else if(strcmp(attr,"ratedvol2")==0){
value=pos->second.ratedvol2;
}else if(strcmp(attr,"rt")==0){
value=pos->second.rt;
}else if(strcmp(attr,"xt")==0){
value=pos->second.xt;
}else if(strcmp(attr,"k")==0){
value=pos->second.k;
}else {
return -1;
}
return 0;
}
//-----------------------
extern "C"
int Transline_set( unsigned short id,
const char* attr,
CORBA::Float value)
{
TranslineMap::iterator pos=trans_map.find(id);
if(pos==trans_map.end())
return -1;
if(strcmp(attr,"ratedmva")==0){
pos->second.ratedmva=value;
}else if(strcmp(attr,"ratedvol1")==0){
pos->second.ratedvol1=value;
}else if(strcmp(attr,"ratedvol2")==0){
pos->second.ratedvol2=value;
}else if(strcmp(attr,"rt")==0){
pos->second.rt=value;
}else if(strcmp(attr,"xt")==0){
pos->second.xt=value;
}else if(strcmp(attr,"k")==0){
pos->second.k=value;
}else{
return -1;
}
return 0;
}
.............................................
POWERSYSTEM::ResistanceType Translinebranch_impl::rt()
{
CORBA::Float temp;
assert(Transline_get(branch_no,"rt",temp)==0);
return temp;
}
void Translinebranch_impl::rt(POWERSYSTEM::ResistanceType new_rt)
{
extern Powernet_impl* powernet_ctrl;
assert(Transline_set(branch_no, "rt",new_rt)==0);
assert(
powernet_ctrl->set_branchinfo(branch_no,from_busno,
-to_busno,"r_para",new_rt)==0);
}
//////////////////////////////
客户端执行tran1(0.00321)
.................
cout<<tran1()<<endl;
输出的不是0.00321,而是-1.07374e+008
不管设置什么数,都是输出-1.07374e+008,
如果在rt()中初始化temp=0.01,则输出0.01
请问在哪里出毛病了呢?