C ++错误:无法将“对象”转换为“对象*”

时间:2019-04-22 13:35:34

标签: c++

我正在尝试编译我的代码,编译器吐出它无法将Connection转换为Connection*,但是在函数参数中我从未指定指针作为参数。

标题声明

我发现了问题。抱歉!

QueryResult execute_select(Connection *db, QString query);

来源

QueryResult execute_select(Connection db, QString query)
{
    int rc;
    char* error_message = 0;
    QueryResult rs;
    //----------Convert Qstring to char
    char* sql = (char*) query.toStdString().c_str();

    rc = sqlite3_exec(db.db, sql, &callback, (void*) &rs, &error_message);

    #ifdef QT_DEBUG
    if(rc != SQLITE_OK){

    }

    #endif

    sqlite3_close(db.db);


    return rs;
}

发生编译器错误的地方:

编辑: 这是get连接方法,它不返回指针

Connection get_database_connection(char* d_path)
{
    Connection conn;
    sqlite3 *db;

    //Open db
    int rc = sqlite3_open(d_path, &db);
    //Check if db is open
    if(rc != SQLITE_OK){
        conn.status = CONNECTION_FAILED;
        return conn;
    }

    conn.db = db;
    conn.path = (char*) db_path.toStdString().c_str();
    conn.status = CONNECTION_SUCCESS;

    return conn;

}
Connection conn = get_database_connection(converted_path);
//Compiler error
QueryResult rs = execute_select(conn, query_string);

编译器消息:

  

Data \ accounts.cpp:在成员函数'std :: list * Accounts :: load()'中:   Data \ accounts.cpp:29:55:错误:无法将参数'1'的'Connection'转换为'Connection *'到'QueryResult execute_select(Connection   *,QString)'        QueryResult rs = execute_select(conn,query_string);

我希望代码可以编译,但是不能编译。

2 个答案:

答案 0 :(得分:2)

正如我在评论中所猜到的那样,问题出在函数声明中(而您正在查看函数定义/实现)。再次发布此信息只是为了使您可以接受答案。

答案 1 :(得分:1)

我正在查看execute_update(Connection db,QString query);宣言。 execute_select(Connection * db,QString查询);在文件的底部。我不知何故看不到它。我更改了指针声明。代码会编译。