error: invalid uninstantiatable type `<invalid>' in cast to ...
- From: "Carlos Pereira" <carlao2005 gmail com>
- To: gtk-list gnome org
- Subject: error: invalid uninstantiatable type `<invalid>' in cast to ...
- Date: Sun, 26 Oct 2008 15:01:29 -0300
Hello people,
I have this problem: I have a matrix of GtkComboBox (drops_regras) ,
created and inserted in a table in this way:
...
GtkWidget *drops_regras[MAIN_nregras][MAIN_narq_ent+1];
for(int coluna=0; coluna<MAIN_narq_ent+1; coluna++)
{
for(int linha=0; linha<MAIN_nregras; linha++)
{
drops_regras[linha][coluna] = gtk_combo_box_new();
gtk_table_attach(GTK_TABLE(table1),
drops_regras[linha][coluna], coluna+1, coluna+2, linha+1, linha+2,
..etc.. );
}
}
...
It is working fine, as you can see in this image:
http://www.carlao2006.xpg.com.br/imagens/bruno01.png
I have to pass this matrix of gtkcombos to a callback-function. As I
have to pass other values, I made a "pack" of pointers, this way:
gpointer pacote2[8];
pacote2[0] = &MAIN_narq_ent;
pacote2[1] = &MAIN_nomes_ent;
pacote2[2] = &MAIN_layers_ent;
pacote2[3] = &MAIN_nome_sai;
pacote2[4] = &MAIN_nregras;
pacote2[5] = drops_regras;
pacote2[6] = txt_layer_out;
pacote2[7] = dialog6_3;
Please note the sixth element, pacote2[5], where I store the main
address of the matrix ( drops_regras) .
Here the conection to the callback-function:
g_signal_connect(G_OBJECT(bot_processaregr), "clicked",
G_CALLBACK(processa_sistema), pacote2);
In the callback-function, I "unpack" these adresses, casting them to
their correct types:
int * pMAIN_narq_ent = (int *) pacote[0];
vector<string> * pMAIN_nomes_ent = (vector<string> *) pacote[1];
vector<string> * pMAIN_layers_ent = (vector<string> *) pacote[2];
string * pMAIN_nome_sai = (string *) pacote[3];
int * pMAIN_nregras = (int *) pacote[4];
GtkWidget *** drops_regras = (GtkWidget ***) pacote[5];
GtkWidget * txt_layer_out = (GtkWidget *) pacote[6];
GtkWidget * dialog6_3 = (GtkWidget *) pacote[7];
All the others variables work fine, but when I try to access a
gtkcombobox inside the matrix, for example:
printf( "%d\n" , gtk_combo_box_get_active( GTK_COMBO_BOX(
drops_regras[0][0] ) ) );
getchar();
I get this error:
(gaia:7848): GLib-GObject-WARNING **: invalid uninstantiatable type
`<invalid>' in cast to `GtkComboBox'
(gaia:7848): Gtk-CRITICAL **: gtk_combo_box_get_active: assertion
`GTK_IS_COMBO_BOX (combo_box)' failed
A final observation: although I program in C-language, I am compiling
using c++ (g++), because of another library in C++ that I have to use.
Is there any difference in the way c++ treats matrices, from how c treats them??
I have made some extra tests, first passing only one gtkcombobox, and
second passing the address of one line of the matrix (and changing the
cast in the start of the callback function accoordingly). Both tests
executed right. But when I use only the address of the whole matrix
(and 3 asteristics)... error!
Thanks in advance for any help.
Best regards,
Carlos
=============================================
Prof. Carlos José de Almeida Pereira
Universidade Estadual de Santa Cruz
Ilhéus - Bahia - Brasil
BLOG:
http://starfightercarlao.blogspot.com
http://starfightercarlaoenglish.blogspot.com (english version)
"Felicidade se acha é em horinhas de descuido."
"Qualquer amor já é um pouquinho de saúde, um descanso na loucura."
(Guimarães Rosa, ambas)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]