我无法解决这个问题。这是一个简单的例子:
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的未定义引用的错误。我究竟做错了什么?谢谢!
答案 0 :(得分:36)
您不能在类中拥有函数声明和定义。将定义移出类或删除声明。
您无法使用void作为参数调用函数。仅在声明中使用。
如果在类之外需要x :: qualifier并且第二次不需要static,则function2的函数定义。
class x
{
public:
void function(void);
private:
static void function2(void);
};
void x::function(void)
{
x::function2();
}
void x::function2(void)
{
}
答案 1 :(得分:3)
您必须使用
定义function2
static void x::function2 (void)
{
body
}
与x::function
更新: 是。在定义类方法时,你不需要用static标记类方法。
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
}