班级CSchedulerDlg
有成员函数:
bool CSchedulerDlg::Insert(CString SQL, CDatabase* dataBase)
{
if (shSysDefaults == NULL)
return false;
dbUtil.ExecuteSQL(dataBase,SQL);
return true;
}
如果我写:
CString query = "hello";
CDatabase* db = NULL;
Insert(query, db );
然后我收到错误:
error C2597: illegal reference to non-static member 'CSchedulerDlg::db '
如何解决此错误?
答案 0 :(得分:3)
您需要CSchedulerDlg
的实例才能调用Insert
,因为它不是静态函数。
CString query = "hello";
CDatabase* db = NULL;
CSchedulerDlg foo; // CSchedulerDlg Instance
foo.Insert(query, db ); // call insert on foo
你需要一个实例的原因是每个非静态函数都有一个类类型指针的隐藏参数。该参数是应该调用该函数的实例。