2010-04-15 6 views
2

Comment implémenter une fonction statique dans une classe abstraite? Où puis-je implémenter ceci?fonction statique dans une classe abstraite

class Item{ 
public: 
    // 
    // Enable (or disable) debug descriptions. When enabled, the String produced 
    // by descrip() includes the minimum width and maximum weight of the Item. 
    // Initially, debugging is disabled. 
    static enableDebug(bool); 

}; 

Répondre

4

Tout d'abord, cette fonction nécessite un type de retour. Je suppose que c'est censé être void.

Vous implémentez dans un fichier source, tout comme vous mettre en œuvre toute autre méthode:

void Item::enableDebug(bool toggle) 
{ 
    // Do whatever 
} 

Il n'y a rien de particulier qu'il soit statique ou être classe Item abstraite. La seule différence est que vous n'avez pas accès à un pointeur this (et par conséquent aussi pas aux variables membres) dans la méthode.

1

Les fonctions statiques ne peuvent pas être virtuelles, donc vous l'implémentez dans le contexte de la classe elle-même. Peu importe si la classe est abstraite ou non.

void Item::enableDebug(bool) 
{  
} 
0

Les méthodes statiques peuvent être implémentées dans n'importe quelle classe. Je ne sais pas si votre méthode peut être statique. Vos commentaires suggèrent que la méthode va définir certaines données d'objet. Dans ce cas, votre méthode ne peut pas être statique.

0

La plupart des compilateurs C++ moderne peuvent (maintenant) poignée ayant la mise en œuvre de la méthode statique dans la déclaration de classe, comme dans:

class Item { 
public: 

    static void enableDebug(bool value) { 
     static bool isOn = false; 
     isOn = value; 
     std::cout << "debug is " << (isOn ? "on" : "off") << std::endl; 
    } 

}; 

Je ne dis pas que ce soit une bonne idée, mais ne la chair les réponses précédentes certains.

Questions connexes