2010-11-03 11 views
2

ont une fonction statique dans un fichier d'en-têteC++ appelant une fonction statique d'une autre fonction statique

class Diagnostics { 
    public: 


    static void functionA(){ 
    } 

    static void functionB(){ 
    some code //works fine until enters the loop below 
    variable_name // works fine here. 
    if (condition){ // 
    variable_name; // after condition is met , i step in here, debugger cannot examine 
        // the vairable_name which was fine above. right after i try to step      over , i get SIGSEV error 
    some_code; // doesnt even come here. Process exited with SIGSEV 
    function C(); // tried using classname::functionC , didnt work either 

     } 
    } 

static void functionC(){ 
} 
+1

Quelle est la question? Je ne m'attendrais pas à trouver 'variable_name' - il n'est mentionné nulle part dans la définition de classe ou dans le code précédent. Et je ne vois pas comment le processus peut sortir avec SIGSEGV s'il ne compile pas, ce qui ne sera pas le cas si 'variable_name' n'est pas trouvé. –

+1

Qu'est-ce que 'variable_name'? Qu'est-ce que 'some_code'? Où sont-ils définis? Il vous manque également des types de retour sur vos fonctions. – casablanca

+1

S'il vous plaît nous montrer le code exact. –

Répondre

4

static l'intérieur d'un class signifie que le membre ou le procédé en question ne fonctionne pas sur un objet, à savoir qu'il n » t définir this, mais il est toujours dans l'espace de noms de la classe.

static en dehors d'une classe signifie ce que cela signifie en C: la variable ou la fonction n'a pas de liaison externe, c'est-à-dire que des éléments extérieurs à l'unité de compilation actuelle ne peuvent pas s'y lier.

Deux choses complètement différentes.

+0

Peut-être que vous étiez confus parce que le PO avait le code indenté incorrectement. Je l'ai réparé, vous devriez voir maintenant pourquoi cette réponse ne fonctionne pas. (À savoir 'functionC' est un membre de la classe) –

+0

droite. corrigé – cyrux

0

Je ne sais pas que le problème était. Fonctionne bien maintenant. Au début est arrivé pendant que je déboguais. Ensuite, je viens d'exécuter au lieu de déboguer, a bien fonctionné. puis j'ai essayé de déboguer à nouveau, ce qui a bien fonctionné cette fois.

+0

... Eh bien, bonne nuit et bonne chance. –