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

Databases. error C2352: illegal call of non-static member function

本文关键字:静态成员 函数 调用 非法 错误 C2352 数据库      更新时间:2023-10-16

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 '

如何修复此错误?

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

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

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