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