Original Post
I have a program like this: There're some stuff there that aren't clear without the rest of the program but the problem is in the last line of the first function. When I pass MyOne to the ChangeSensorType it's type doesn't change. Why not? Thanks.
void TryTriggerSystem(void)
{
Trigger *MyTrig;
MyTrig=new Trigger;
Operator *MyAnd=CreateOperator(D_OP_AND);
Operator *MyOr=CreateOperator(D_OP_OR);
Operator *MyOr2=CreateOperator(D_OP_OR);
Sensor *MyOne=CreateSensor(D_SNS_ONE);
Sensor *MyZero=CreateSensor(D_SNS_ZERO);
Action *MyState=CreateAction(D_PRINTSTATE);
MakeLink(MyTrig,MyState);
MakeLink(MyTrig,MyAnd);
MakeLink(MyAnd,MyOr);
MakeLink(MyOr,MyOne);
MakeLink(MyOr,MyZero);
MakeLink(MyAnd,MyOr2);
MakeLink(MyOr2,MyOne);
MakeLink(MyOr2,MyOne);
MakeLink(MyAnd,MyOne);
ChangeSensorType(MyOne,D_SNS_ZERO);
// This line has a BUG! : MyOne dosn't change at all !!!!
MyTrig->Go();
}
Sensor* CreateSensor(int TYPE)
{
Sensor *nSns;
switch(TYPE)
{
case D_DEFAULT:
case D_SNS_ONE:
nSns=new SenseONE();
break;
case D_SNS_ZERO:
nSns=new SenseZERO();
break;
default:
nSns=NULL;
break;
}
return(nSns);
}
void ChangeSensorType(Sensor *Sns,int TYPE)
{
//delete Sns;
Sns=CreateSensor(TYPE);
}