C++ 为什么说我定义的 函数 是 非法 的

来源:百度知道 编辑:UC知道 时间:2024/06/15 11:56:03
我在C++中新添加个类,类的类型是Generic Class类名CClient
我在类中定义函数,“int HaveName(CString cCname)”
代码如下
class CClient
{
public:
CClient();
virtual ~CClient();
int HaveName(CString cCname);

};
然后在CClient中添加此代码,调试运行后发现有一错误,提示为“‘HaveName’:local function definitions are illegal”
为什么说我定义的函数是非法的
我是按书上要求的函数名啊。
代码如下:
CClient::CClient()
{
int CClient::HaveName(CString cCname)
{
//连接数据库
ADOConn m_AdoConn;
m_AdoConn.OnInitADOConn();
//设置SELECT语句
_bstr_t vSQL;
vSQL="SELECT * FROM Client WHERE Cname=" + cCname+ "";
//执行SELECT句语
_RecordsetPtr m_pRecordset;
m_pRecordset=m_AdoConn.GetRecordSet(vSQL);
//返回各列的值
if (m_pRecordset->adoEOF==1)
return -1;
else
return 1;
//断开数据库的连接
m_AdoConn.ExitConnect();
}

}

CClient::~CClient()
{

}
你刚说
“你把HaveName的实现放到了构造函数中了

你把HaveName的实现放到了构造函数中了
把它从构造函数CClient中抽出来单独成为一个函数。
class CClient
{
public:
CClient();
virtual ~CClient();

int HaveName(CString cCname); //这里申明函数
};

CClient::CClient()
{
//你原来将HaveName的实现放到这里了,应该放到后面去
}

CClient::~CClient()
{

}

//这里实现函数
int CClient::HaveName(CString cCname)
{
//连接数据库
ADOConn m_AdoConn;
m_AdoConn.OnInitADOConn();
//设置SELECT语句
_bstr_t vSQL;
vSQL="SELECT * FROM Client WHERE Cname=" + cCname+ "";
//执行SELECT句语
_RecordsetPtr m_pRecordset;
m_pRecordset=m_AdoConn.GetRecordSet(vSQL);
//返回各列的值
if (m_pRecordset->adoEOF==1)
return -1;
else
return 1;
//断开数据库的连接
m_AdoConn.ExitConnect();
} ;

CClient::CClient()
{
int CClient::HaveName(CString cCname)
这是什么?CClient() 函数里定义HaveName(CString cCname) 这个函数?