C ++中的重载ostream运算符错误
Overloaded ostream operator error in c++
我尝试在 class 学生中重载 ostream 运算符,如下所示:
//Student.h
class Student
{
public:
Student(){}
~Student(){}
friend std::ostream& operator<< (std::ostream&,const Student&);
friend std::istream& operator>> (std::istream&,const Student&);
private:
char* snum;
};
//Student.cpp
#include "Student.h"
std::ostream& operator<< (std::ostream& output,const Student& c)
{
output<<c.snum<<", "<<c.name<<", "<<c.email<<endl;
return output;
}
std::istream& operator>> (std::istream& input,const Student& cN)
{
cout<<"Input number: ";
input>>cN.snum;
return input;
}
//main.cpp
#include "Student.h"
int main()
{
Student st;
std::cin >> st;
std::cout << st << std::endl;
return 0;
}
但是当我输入 snum 时,我收到错误消息 "Segmentation Fault"。
我将 char* snum;
更改为 char snum;
,它 return 编译器错误 The operation "std::istream>> const char" is illegal.
谢谢你的帮助。
你需要snum指向分配内存,然后你可以输入数据,例如:
char* p_var = new char[20]; // 20 bytes allocation
// ... using p_var
delete[] p_var; // Releasep_var memory
在你的情况下,你应该在Ctor中进行分配,在Dtor中进行释放。
您可以阅读此内容以获取更多信息:
http://www.cplusplus.com/doc/tutorial/basic_io/
如果您的问题通过以下更改得到解决,请告诉我...
class Student
{
private:
char snum;
char name;
char email;
public:
Student(){};
~Student(){};
friend std::ostream& operator<< (std::ostream&,Student&);
friend std::istream& operator>> (std::istream&,Student&);
};
std::ostream& operator<< (std::ostream& output,Student& c)
{
output<<c.snum<<", "<<c.name<<", "<<c.email<<endl;
return output;
}
std::istream& operator>> (std::istream& input, Student& cN)
{
cout<<"Input number: ";
input>>cN.snum;
input>>cN.name;
input>>cN.email;
return input;
}
int main()
{
Student st;
std::cin >> st;
std::cout << st << std::endl;
return 0;
}
在用于 cin 之前使用字符串或字符数组或为 char *x 分配一些内存...
我尝试在 class 学生中重载 ostream 运算符,如下所示:
//Student.h
class Student
{
public:
Student(){}
~Student(){}
friend std::ostream& operator<< (std::ostream&,const Student&);
friend std::istream& operator>> (std::istream&,const Student&);
private:
char* snum;
};
//Student.cpp
#include "Student.h"
std::ostream& operator<< (std::ostream& output,const Student& c)
{
output<<c.snum<<", "<<c.name<<", "<<c.email<<endl;
return output;
}
std::istream& operator>> (std::istream& input,const Student& cN)
{
cout<<"Input number: ";
input>>cN.snum;
return input;
}
//main.cpp
#include "Student.h"
int main()
{
Student st;
std::cin >> st;
std::cout << st << std::endl;
return 0;
}
但是当我输入 snum 时,我收到错误消息 "Segmentation Fault"。
我将 char* snum;
更改为 char snum;
,它 return 编译器错误 The operation "std::istream>> const char" is illegal.
谢谢你的帮助。
你需要snum指向分配内存,然后你可以输入数据,例如:
char* p_var = new char[20]; // 20 bytes allocation
// ... using p_var
delete[] p_var; // Releasep_var memory
在你的情况下,你应该在Ctor中进行分配,在Dtor中进行释放。 您可以阅读此内容以获取更多信息: http://www.cplusplus.com/doc/tutorial/basic_io/
如果您的问题通过以下更改得到解决,请告诉我...
class Student
{
private:
char snum;
char name;
char email;
public:
Student(){};
~Student(){};
friend std::ostream& operator<< (std::ostream&,Student&);
friend std::istream& operator>> (std::istream&,Student&);
};
std::ostream& operator<< (std::ostream& output,Student& c)
{
output<<c.snum<<", "<<c.name<<", "<<c.email<<endl;
return output;
}
std::istream& operator>> (std::istream& input, Student& cN)
{
cout<<"Input number: ";
input>>cN.snum;
input>>cN.name;
input>>cN.email;
return input;
}
int main()
{
Student st;
std::cin >> st;
std::cout << st << std::endl;
return 0;
}
在用于 cin 之前使用字符串或字符数组或为 char *x 分配一些内存...