ne peut pas passer des objets de la non-trivialement-copiable type " const classe mysqlpp::String’
J'ai besoin de récupérer un INT à partir d'une base de données (MariaDB) et le mettre dans une liste faite avec GTK3.
Quand j'essaie de passer la variable de MariaDB à GTK3, le compilateur renvoie l'erreur suivante:
cannot pass objects of non-trivially-copyable type ‘const class mysqlpp::String’ through ‘...’
(Ce qui se passe dans la fonction void item(string nombre)
, dans les lignes à l'intérieur des crochets, dans la boucle for)
Donc, je tiens à remercier toutes les personnes qui peuvent m'en dire un moyen de corriger ce problème.
Merci pour vos réponses.
Le code est le suivant:
void item(string nombre)
{
Connection con;
con.connect("", server, user, pass);
con.select_db(db);
string consulta = nombre;
Query pedido = con.query(consulta);
StoreQueryResult resp = pedido.store();
Row fila;
for (i=0; i<resp.num_rows(); i++)
/*THE PROBLEM IS HERE*/
{
gtk_list_store_append(GTK_LIST_STORE(list_store), &list_iterator);
gtk_list_store_set(GTK_LIST_STORE(list_store), &list_iterator, 0, resp[i][1], 1, resp[i][2], 2, resp[i][1],-1);
}
con.disconnect();
}
- Et de ligne en ligne 70?
- Je sais qu'il est là, mais avez-vous vraiment attendons-nous à compter de ligne de 70 à partir du haut de la source de fichier? Il est d'usage d'ajouter un commentaire sur la ligne où l'erreur se produit, de sorte que nous n'avons pas à le chasser vers le bas sur nous-mêmes.
- Son dans le vide de l'élément(string nombre) son intérieur le entre parenthèses for (i=0; i<resp.num_rows(); i++) { gtk_list_store_append(GTK_LIST_STORE(list_store), &list_iterator); gtk_list_store_set(GTK_LIST_STORE(list_store), &list_iterator, 0, resp[i][1], 1, resp[i][2], 2, resp[i][1],-1); }
- 70 et 71 sont les lignes à l'intérieur de crochets dans la partie
- Après un certain temps à l'aide de SOF, maintenant je me sens plus familier avec la façon dont il fonctionne, donc j'ai changé la question pour la rendre plus claire.
Vous devez vous connecter pour publier un commentaire.
Il semble que vous essayez de passer une
mysqlpp::String
objet degtk_list_store_set()
. Vous ne pouvez pas faire cela, parce que c'est une fonction de C et de ne pas comprendre des objets en C++.1Au lieu de cela, appelez
c_str()
sur l'objet de type string, qui renvoie un pointeur vers une chaîne se terminant par null.gtk_list_store_set()
copie la valeur de la pointe-à la chaîne dans ses propres structures internes, donc il n'y aura pas de données, les problèmes de propriété.1 plus Précisément, vous essayez de passer un objet C++ dans un
va_arg
structure, qui est ce que...
représente dans le C prototype de fonction. Vous ne pouvez le faire avec ce qu'on appelle trivialement-copiable objets, etmysqlpp::String
objets ne sont pas trivialement-copiable.