c++ 静态成员函数的返回值是不是不能为void?

来源:百度知道 编辑:UC知道 时间:2024/06/14 07:44:12
在类里面定义静态成员函数,就像 static void getcount()
编译程序时会出现:
D:\我的文档\桌面\程序\3——50\work_3_50_52.cpp(41) : error C2556: 'int __thiscall Student::getcount(void)' : overloaded function differs only by return type from 'void __cdecl Student::getcount(void)'
D:\我的文档\桌面\程序\3——50\work_3_50_52.cpp(16) : see declaration of 'getcount'
D:\我的文档\桌面\程序\3——50\work_3_50_52.cpp(41) : error C2371: 'getcount' : redefinition; different basic types
D:\我的文档\桌面\程序\3——50\work_3_50_52.cpp(16) : see declaration of 'getcount'
D:\我的文档\桌面\程序\3——50\work_3_50_52.cpp(73) : error C2264: 'getcount' : error in function definition or declaration; function not called
Error executing cl.exe.

work_3_50_52.obj - 3 error(s), 0 warning(s)

可以,void类型和其他返回类型都可以, 如下程序可以正确运行
#include <iostream.h>
class myclass
{
public:
myclass(){ i++; }
static int geti() { return i; } //定义静态成员函数
static void seti(int n){ i=n; } //定义静态成员函数
private:
static int i;
};
int myclass::i=0;
void main()
{
myclass a,b;
a.seti(5);
cout<<" myclass::i= "<<a.geti()<<endl;
cout<<" myclass::i= "<<b.geti()<<endl;
}
看看你程序是不是哪写错了?

可以.

可能你实现里面的return的返回类型跟声明的函数返回类型不一样.

静态成员的返回值可以为void 注意 如果需要退出则可以return; 千万不要返回其他类型。

静态成员变量要通过静态成员函数访问 看看你的'getcount' 函数是不是静态的