请看下面的例子:
#include <iostream>
using namespace std;
class Input
{
int m_int;
double m_doub;
char* m_char;
public:
Input(int integer, double floating, char* character)
{
m_int = integer;
m_doub = floating;
m_char = character;
}
friend istream& operator >> (istream &ope, Input &obj);
friend ostream& operator << (ostream &ope, Input &obj);
int ret_int(){return m_int;}
double ret_doub(){return m_doub;}
char* ret_char(){return m_char;}
};
istream& operator >> (istream &ope, Input &obj)
{
ope >> obj.m_int;
ope >> obj.m_doub;
ope >> obj.m_char;
}
ostream& operator << (ostream &ope, Input &obj)
{
ope << obj.m_int;
ope << obj.m_doub;
ope << obj.m_char;
}
int main()
{
Input var(51, 56.2, "Avneet");
std::cin >> var;
std::cout << var;
return 0;
}
在我通过重载运算符输入字符串之前,该程序还可以。
ope >> obj.m_int被接受,ope >> obj.m_doub被接受,ope >> obj.m_char程序崩溃了???
提前致谢 :-)
最佳答案
问题从这里开始
Input var(51, 56.2, "Avneet");
在其中使用字符串文字初始化
char*
中的Input
指针。输入操作
ope >> obj.m_char
然后将尝试将输入存储在文字中。崩溃!与
std::string
成员一起工作会更好。关于c++ - 我不能重载输入运算符来输入字符数组(C风格的字符串),即我的类的成员变量吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32432707/