问个c++的问题,系统提示error C2065: 'pset' : undeclared identifier ,是怎么回事 ,下面是程序

void CDlgtianjia::OnOK()
{
// TODO: Add extra validation here
UpdateData(TRUE);
CString m_2=" ",m_1=" ",m_5=" ";
m_Sex.GetWindowText(m_1);

UINT m_6=GetCheckedRadioButton(IDC_RADIO1,IDC_RADIO2);
if(m_6==IDC_RADIO1)
{m_2="住院";}
else
{m_2="门诊";}
bool add=true;
if((m_age==0)||(m_number.IsEmpty())||(m_1.IsEmpty())||(m_bl.IsEmpty())||(m_2.IsEmpty())||(m_5.IsEmpty()))
AfxMessageBox("请填写完整信息");
else
{ CSetdata *pset=new CSetdata();
pset->Open();
if(pset->GetRecordCount()!=0)
{
for(int i=0;!pset->IsEOF();i++)
if(!strcmp(pset->m_number,m_number))
{AfxMessageBox("此检查号已存在");
add=false;
}
pset->MoveNext();
}
}

if(add)
{
int l=strlen(m_number);
char temp[10];
switch(1)
{
case 1:strcpy(temp,"00000");break;
case 2:strcpy(temp,"0000");break;
case 3:strcpy(temp,"000");break;
case 4:strcpy(temp,"00");break;
case 5:strcpy(temp,"0");break;
default:strcpy(temp,"");break;
}
strcat(temp,m_number);
m_number=temp;
//filenamesave=temp;
pset->AddNew();
pset->m_number=m_number;
pset->m_name=m_name;
pset->m_age=m_age;
pset->m_mode=m_2;
pset->m_zy=m_5;
pset->m_sex=m_1;
pset->m_bl=m_bl;
pset->m_date=m_date;
pset->Update();
pset->Close();

CDialog::OnOK();
}
}
else
{ CSetdata *pset=new CSetdata();
pset->Open();
你的变量的声明是在else中体现的,如果else不成立,则这个声明就不会存在,此时你下面的if(add)中就不能再使用了??
CSetdata *pset=new CSetdata();
这个定义放在代码最前面
不然在pset->AddNew();
时,这个pset已经超出定义范围了
CSetdata *pset=new CSetdata();
这个pset只能在{和}之间使用,放到函数前面是一种方法,也可以作为全局变量。记得delete哦!!
pset没有定义
if()
{...}
else()
{...},
如果if 里面语句成立的话,程序就不会执行else里面的话乐儿
random和randomize用法有问题。

要不就是你的编译器不支持,

改成srand(time(0)) ; rand()试试

random和randomize用法有问题。

要不就是你的编译器不支持,

改成srand(time(0)) ; rand()试试