Справка по статической функции С++
Я не могу пройти мимо этого вопроса, который у меня есть. Вот простой пример:
class x
{
public:
void function(void);
private:
static void function2(void);
};
void x::function(void)
{
x::function2(void);
}
static void function2(void)
{
//something
}
Я получаю ошибки, в которых жалуются, что функция2 является частной. Если я сделаю это общедоступным (чего я действительно не хочу делать), я получаю ошибки относительно ссылки undefined на функцию2. Что я делаю не так? Спасибо!
Ответы
Ответ 1
-
У вас не может быть объявления и определения функции как в классе. Либо переместите определения из класса, либо удалите объявления.
-
Вы не можете вызвать функцию с void как параметр. Это используется только в декларации.
-
Определение функции для функции2, если вне класса будет нуждаться в х:: классификаторе, а статический не требуется во второй раз.
class x
{
public:
void function(void);
private:
static void function2(void);
};
void x::function(void)
{
x::function2();
}
void x::function2(void)
{
}
Ответ 2
Вы должны определить function2
с помощью
static void x::function2 (void)
{
body
}
как это было при x::function
обновление:
Да. вам не нужно указывать метод класса со статикой при его определении.
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
}