数据库。错误C2352:非静态调用非静态成员函数

时间:2016-01-11 21:23:22

标签: c++ sql database

班级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 '

如何解决此错误?

1 个答案:

答案 0 :(得分:3)

您需要CSchedulerDlg的实例才能调用Insert,因为它不是静态函数。

CString query = "hello"; 
CDatabase* db = NULL;
CSchedulerDlg foo; // CSchedulerDlg Instance
foo.Insert(query, db ); // call insert on foo

你需要一个实例的原因是每个非静态函数都有一个类类型指针的隐藏参数。该参数是应该调用该函数的实例。