C ++ вызывает статическую функцию из другой статической функции - PullRequest
2 голосов
/ 03 ноября 2010

имеют статическую функцию в заголовочном файле

    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(){
}

Ответы [ 2 ]

4 голосов
/ 03 ноября 2010

static внутри class означает, что рассматриваемый член или метод не работает с объектом, т. Е. Он не определяет this, но все еще находится в пространстве имен класса.

static вне класса означает, что это означает в C: переменная или функция не имеет внешней связи, то есть вещи вне текущей единицы компиляции не могут ссылаться на нее.

Две совершенно разные вещи.

0 голосов
/ 03 ноября 2010

Я не знаю, проблема была.Работает нормально сейчас.изначально произошло во время отладки.Тогда я просто выполнил вместо отладки, работал нормально.затем я снова попробовал отладку, которая на этот раз работала нормально.

...