Argc e argv in metodo classe [C++]

di il
3 risposte

Argc e argv in metodo classe [C++]

Ciao,
mi sono impantanato nel seguente frammento di codice:

void opening::m_launch()
{
	switch(counter){
		case 1:
			{
				keyboard k;
				glutInit(int argc, char * argv);
				glutInitDisplayMode (GLUT_SINGLE);
				glutInitWindowSize (700, 400);
				glutInitWindowPosition (100, 100);
				glutCreateWindow ("New Window");
				glutDisplayFunc(k.display); 
				glutReshapeFunc(k.reshape);
				break;
			}
		case 3:
			exit(0);
			break;
		default:
			break;
	}
}
Il problema è che devo passare argc e argv a glutInit (è il metodo per inizializzare una finestra grafica con glut). Nel main ho chiamato glutInit e ho passato
glutInit(&argc, argv);
,
se faccio lo stesso nel metodo della mia classe compare un errore "argc was not declared in this scope" (e similmente per argv).
Se provo a compilare il codice che ho postato, l'errore diventa "expected primary-expression before ‘int’" e "expected primary-expression before ‘char'".

Penso che possa essere una cosa stupida (magari ce l'ho davanti agli occhi e non la vedo), spero mi possiate aiutare.
Se devo postare altro codice, anche se non credo, o servono chiarimenti sono qui

Grazie mille per la disponibilità

3 Risposte

  • Re: Argc e argv in metodo classe [C++]

    Potresti postrare l'imlementazione di glutInit() ? se usi il C, forse il problema è data dalla '&', per il C++ invece non ci sono problemi. Inoltre dici che chiami la funzione glutInit() dal main(), anche se a quanto vedo glutInit() è chiamata anche dalla funzione m_launch() di 'opening', che credo sia una classe (se si allora usi il C++ ), in modo sbagliato dato che mi sembra sia 'definita' piuttosto che chiamata. L'errore quindi può essere dovuto da quello scritto in m_launch().
  • Re: Argc e argv in metodo classe [C++]

    Ciao,
    hai ragione, non mi sono spiegato benissimo
    Allora, sto scrivendo in C++.
    glutInit è una funzione della libreria grafica glut, non l'ho implementata io. Adesso non l'ho trovata nella miriade di *.h che ci sono, la reference dice le seguenti cose:
    void glutInit(int *argcp, char **argv);
    argcp
    A pointer to the program's unmodified argc variable from main. Upon return, the value pointed to by argcp will be updated, because glutInit extracts any command line options intended for the GLUT library.

    argv
    The program's unmodified argv variable from main. Like argcp, the data for argv will be updated because glutInit extracts any command line options understood by the GLUT library.
    http://pyopengl.sourceforge.net/documentation/manual/glutInit.3GLUT.xml


    GlutInit() viene chiamata sia dal main che dalla classe. Inizialmente il programma si apre, il main con glutInit() apre una prima finestra grafica e poi ci sono varie classi che permettono diverse azioni. In un determinato caso, se viene chiamato il metodo m_launch, devo "distruggere" la vecchia finestra grafica e aprirne un'altra, da qui la necessità di chiamare glutInit() dalla classe.
    Nel main la chiamata funziona perfettamente (la finestra grafica si apre passando come argomenti (&argc, argv))...

    Spero che così sia più chiaro cosa intendo fare e cosa ho fatto, se manca altro fammi un fischio

    Grazie mille per l'aiuto!
  • Re: Argc e argv in metodo classe [C++]

    Ecco gli ultimi aggiornamenti: sono riuscito ad aggirare il problema omettendo la funzione glutInit(), e così funziona tutto
    Mi piacerebbe comunque riuscire a capire il perchè non funzionava, e magari reintrodurla, dato che il fatto che in un caso funzioni anche senza glutInit() non penso significhi che possa funzionare sempre (e magari mi torna utile in futuro!)

    Grazie ancora a tutti
Devi accedere o registrarti per scrivere nel forum
3 risposte