类和结构体混和使用的问题?

huangguolin 2005-08-08 09:21:13
----------------statemachine.h------------
class StateMachine
{
typedef struct
{
char * tOnEnter;
char * tOnReturnOK;
char * tOnReturnNOK;
} State;
private:
char tProcessID[DB_PROCESS_ID_LEN+1];
 short sStateNum;
State * uStates;
SQLProcessor * sqlp;
public:
StateMachine();
~StateMachine();
void getData(void);
char * getID(void);
};

------------------------------------
x.cpp
StateMachine uMachines[200];
for(sCont=0;sCont<sMachines;sCont++)
uMachines[sCont].getData();
------------------------------------
x1.cpp
sprintf(tWhere, "SELECT * FROM %s WHERE %s='%s' ORDER BY %s",
DB_STATES_ON_MACHINE_TABLE, DB_MACHINE_ID_FIELD,
tMachineID, DB_STATE_NUMBER_FIELD);
printf("\n\r tWhere2=%s",tWhere);
while(sqlp->fetch()==SQL_SUCCESS)
{
nStates=sqlp->getLongFieldValue(DB_STATE_NUMBER_FIELD);
strcpy(tWhere,sqlp->getStringFieldValue(DB_ON_ENTER_FIELD));
if(*tWhere)
{
uStates[nStates].tOnEnter = new char[strlen(tWhere)+1];
strcpy(uStates[nStates].tOnEnter, tWhere);
}
else
uStates[nStates].tOnEnter=NULL;
}
如何理解,UMachines[0..10].getData()与UState[0..20].tOnEnter关系????
...全文
961 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
BlueSoal 2005-08-08
  • 打赏
  • 举报
回复
都是私有变量,只能在写类函数来给外部提供接口来获得其值
BlueSoal 2005-08-08
  • 打赏
  • 举报
回复
State * uStates肯定是在构造函数StateMachine()中new了一块空间出来
猜测是 uStates = new State[nStates];
使用方法:
Umachines[i].Ustates[j].tOnEnter就可以访问tOnEnter.其他类似。
i = 0..7
j = 0..20
huangguolin 2005-08-08
  • 打赏
  • 举报
回复
是不是形成一个UMachines[0..7].UStates[0..20].tOnEnter的数据结构,那如何使用泥?
huangguolin 2005-08-08
  • 打赏
  • 举报
回复
void StateMachine::getData(void)
{sprintf(tWhere, "SELECT * FROM %s WHERE %s='%s' ORDER BY %s",
DB_STATES_ON_MACHINE_TABLE, DB_MACHINE_ID_FIELD,
tMachineID, DB_STATE_NUMBER_FIELD);
printf("\n\r tWhere2=%s",tWhere);
while(sqlp->fetch()==SQL_SUCCESS)
{
nStates=sqlp->getLongFieldValue(DB_STATE_NUMBER_FIELD);
strcpy(tWhere,sqlp->getStringFieldValue(DB_ON_ENTER_FIELD));
if(*tWhere)
{
uStates[nStates].tOnEnter = new char[strlen(tWhere)+1];
strcpy(uStates[nStates].tOnEnter, tWhere);
}
else
uStates[nStates].tOnEnter=NULL;
}

BlueSoal 2005-08-08
  • 打赏
  • 举报
回复
命名空间的使用而已
使得自定义的结构在外面使用的话不会发生命名冲突而已。
(外面是使用得话,需要增加类修饰符,即:StateMachine::State uStates[nStates])
yahaha 2005-08-08
  • 打赏
  • 举报
回复
你getData()方法实现是什么,这么看怎么看关系,前面是一个类调用自己的成员函数,后面是一个结构体调用自己的成员变量.

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧