如果静态类成员和静态类函数具有类范围,那么为什么我无法访问显示功能(它显示错误)?如果代替显示功能我写入计数它显示正确的值,即0
#include <iostream>
#include <string>
using namespace std;
class Person
{
public:
static int Length;
static void display()
{
cout<< ++Length;
}
};
int Person::Length=0;
int main()
{
cout<< Person :: display(); //error
// Person :: Length shows correct value
return 0;
}
答案 0 :(得分:6)
您可以调用display
函数,您的错误是您尝试将结果输出到cout
。 Person::display
不返回任何内容,因此错误。
只需改变一下:
cout<< Person :: display(); //error
对此:
Person::display();
答案 1 :(得分:0)
如果要将对象传递给流,则需要定义一个合适的运算符&lt;&lt;,如下所示:
#include <iostream>
#include <string>
using namespace std;
class Person
{
public:
class Displayable {
template< typename OStream >
friend OStream& operator<< (OStream& os, Displayable const&) {
os << ++Person::Length;
return os;
}
};
static int Length;
static Displayable display() { return {}; }
};
int Person::Length=0;
int main()
{
cout<< Person :: display(); //works
// Person :: Length shows correct value
return 0;
}