请看下面的例子:

#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/

10-15 00:26
查看更多