Статическая функциональная справка C++

Я не могу закончить эту проблему, которую я имею. Вот простой пример:

class x
{
    public:
    void function(void);

    private:
    static void function2(void);
};

void x::function(void)
{
    x::function2(void);
}

static void function2(void)
{
     //something
}

Я получаю ошибки, по которым жалуются на function2, являющийся частным. Если я обнародовал его (который я действительно не хочу делать), я получаю ошибки о неопределенной ссылке на function2. Что я делаю неправильно?Спасибо!

20
задан Suzanne Dupéron 1 November 2012 в 17:25
поделиться

2 ответа

  1. Вы не можете иметь объявление и определение функции как в классе. Либо переместите определения из класса, либо удалите объявления.

  2. Вы не можете вызывать функцию с пустым значением в качестве параметра. Это используется только в декларации.

  3. Определение функции для function2, если вне класса потребуется квалификатор x ::, а static не требуется во второй раз.


    class x
    {
        public:
            void function(void); 
        private:
            static void function2(void);
    };

    void x::function(void)
    { 
        x::function2(); 
    }

    void x::function2(void)
    {
    }
36
ответ дан 29 November 2019 в 23:57
поделиться

Вы должны определить function2 с помощью

static void x::function2 (void)
{
    body
}

, как это было с x :: function

update: {{ 1}} Да. вам не нужно помечать метод класса статическим при его определении.

class x
{
 public:
   void function(void);

 private:
   static void function2(void);
}; //end of class

// here are definitions of members
static void x::function(void)
{
  x::function2();
}
static void x::function2(void)
{
//something
}
3
ответ дан 29 November 2019 в 23:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: