我正在尝试编译我的代码,编译器吐出它无法将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);
我希望代码可以编译,但是不能编译。
答案 0 :(得分:2)
正如我在评论中所猜到的那样,问题出在函数声明中(而您正在查看函数定义/实现)。再次发布此信息只是为了使您可以接受答案。
答案 1 :(得分:1)
我正在查看execute_update(Connection db,QString query);宣言。 execute_select(Connection * db,QString查询);在文件的底部。我不知何故看不到它。我更改了指针声明。代码会编译。