c++中的静态成员函数错误
static member function error in c++
如果静态类成员和静态类函数有类作用域,那么为什么我不能访问显示函数(它显示错误)?如果代替显示功能I写入计数,则显示正确的值,即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;
}
您可以调用display
函数,您的错误是试图将结果输出到cout
。Person::display
没有返回任何内容,因此出现错误。
只需更改:
cout<< Person :: display(); //error
对此:
Person::display();
如果要将对象管道传输到流中,则需要定义适当的运算符<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;
}
相关文章:
- "error: no matching function for call to"构造函数错误
- 为什么类中的ostringstream类型的成员会导致";调用隐含删除复制构造函数";错误
- 尝试将unique_ptrs推送到向量时使用纯虚拟函数错误
- C++ OpenCV 卡尔曼滤波器构造函数错误
- C++:用户定义的显式类型转换函数错误
- C++ 合并字符串以'system'函数错误
- C++ wmain 函数错误时使用 Unicode
- 结构数组的构造函数错误,错误消息:没有构造函数实例与参数列表匹配
- C++ 中常量属性的初始化构造函数错误
- 线程 std::调用未知类型,无法专门化函数错误
- 表单显示对话框函数错误,并且不执行下面的语句
- 函数错误 C2059:语法错误:'>'不起作用
- STL向量上出现奇怪的复制构造函数错误
- C++ Visual Studio 重载函数错误:没有重载函数的实例与指定的类型匹配
- C++引用已删除函数错误
- 为什么通过带有文字编号的引用调用会出现"无匹配函数"错误?
- C++ 乘法定义的构造函数错误消息似乎错误
- 在 c++ 代码中将数组传递给函数错误
- FFMPEG avcodec_decode_video2函数错误代码
- 为什么我会收到转换函数错误