Ciao a tutti,
scrivo per chiedervi un aiuto
In pratica, ho una classe 'interface' che ha un metodo che deve aprire finestre diverse a seconda della classe che lo chiama. Quindi ho pensato di passare il nome della classe chiamante il metodo come argomento della funzione, in modo da riuscire ad effettuare l'azione corretta. Posto qua il codice così è più chiaro:
La classe
interface, il metodo incriminato è
compare (.cpp)
interface::interface(){} //Constructor
interface::~interface(){} //Destructor
int interface::x_mouse=0;
int interface::y_mouse=0;
bool interface::mouse_left_button; //1 if it's pressed, 0 if not
std::string interface::who;
void interface::compare(float x_coord, float y_coord, int position, std::string who_is)
{
if(x_mouse>=((x_coord*70)+350) && x_mouse<=((x_coord+0.2)*70+350)){
if(y_mouse<=((y_coord*(-70))+200) && y_mouse>=(((y_coord+0.2)*(-70))+200)){
if(mouse_left_button==1){
opening::counter=position;
who::m_launch(); //L'ERRORE E' RIFERITO A QUESTA RIGA
}
}
}
}
interface.h:
class interface
{
public:
interface();
~interface();
static int x_mouse;
static int y_mouse;
static bool mouse_left_button;
static std::string who;
static void compare(float x_coord, float y_coord, int position, std::string who);
static void getMouse(int button, int state, int x, int y);
static void keyPressed (unsigned char key, int x, int y);
static void keyUp (unsigned char key, int x, int y);
static void keySpecial (int key, int x, int y);
static void keySpecialUp (int key, int x, int y);
static void key_func(void);
private:
};
La chiamata del metodo da parte di un'altra classe:
void opening::m_drawButton(float x_coord, float y_coord, int position) //METHOD: m_drawButton
{
glutMouseFunc(interface::getMouse); //Here I call functions for interfacing with mouse
interface::compare(x_coord, y_coord, position, "opening");
}
Compilando mi dà come errore
error: ‘who’ is not a class or namespace.
Escluderei un dovuto all'allegamento del .h, in quanto tutte le classi sono definite nello stesso .h e prima di inserire questo metodo funzionava...
Sinceramente non riesco a capire cosa ci sia che non va (e qualcosa sicuramente c'è), ringrazio chiunque abbia anche solo la pazienza di leggere tutto, poi se la soluzione (o idee per la soluzione) arriva tanto meglio!