m_MAX et ask() sont utilisés par run() mais ne devraient pas être publics. Comment/peut-on le faire?Comment/devrait être caché la variable et la fonction de membre statique C++?
#include <vector>
class Q {
public:
static int const m_MAX=17;
int ask(){return 4;}
};
class UI {
private:
std::vector<Q*> m_list;
public:
void add(Q* a_q){m_list.push_back(a_q);}
int run(){return Q::m_MAX==m_list[0]->ask();}
};
int main()
{
UI ui;
ui.add(new Q);
ui.add(new Q);
int status = ui.run();
}
Modification de Q à: classe Q { privé: static int const m_MAX = 17; int ask() {return 4;} classe d'amis UI; }; Aucune erreur produite. Comment notez-vous la déclaration à terme? –
Hmm peut-être que j'avais tort là-bas, j'ai supposé que vous auriez une erreur de symbole inconnu. Mais peut-être que la déclaration de l'ami agit comme une déclaration à terme. Bien que cela fonctionne bien. – DeusAduro