举个例子:
#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");
在 Input
中用字符串文字初始化 char*
指针。
输入操作 ope >> obj.m_char
然后将尝试将输入存储在文字中。崩溃!
使用 std::string
成员会更好。
关于c++ - 我不能重载输入运算符来输入一个字符数组(C 风格字符串),这是我的类的一个成员变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32432707/