程序在 cin >>后无响应

Program unresponsive after cin >>

本文关键字:gt 响应 程序 cin      更新时间:2023-10-16

我正在测试运算符重载,它似乎被重载的">>"运算符挂断了。我输入了数字并点击回车键,然后光标就停在下一行向我眨眼

main.cpp

#include <iostream>
using std::cout;
using std::endl;
using std::cin;
#include "OpTesting.h"
int main() {
    Testing tObject(8);
    Testing tObject2;
    cout<<"nEnter 7 numbers" <<endl;
    cout<<":: ";
    cin>>tObject;
    cout<<"nFirst object contents: ";
    cout<<tObject;
    cout<<"nAssigning contents of first object to second object" <<endl;
    tObject = tObject2;
    cout<<"nContents of second object: ";
    cout<<tObject2;
    return 0;
}

函数定义

Testing::Testing(int arraySize) : length(arraySize) {
    cout<<"Object initialized" <<endl;
    ptr = new int[length];
    for(int x = 0; x < length; x++) {
        ptr[x] = 0;
    }
}
Testing::Testing(const Testing &toBeCopied) {
    for(int x = 0; x < length; x++) {
        ptr[x] = toBeCopied.ptr[x];
    }
}
Testing::~Testing() {
    delete[] ptr;
}
const Testing &Testing::operator=(const Testing &toBeAssigned) {
    for(int x = 0; x < length; x++) {
        ptr[x] = toBeAssigned.ptr[x];
    }
    return toBeAssigned;
}
ostream &operator<<(ostream &output, const Testing &data) {
    for(int x = 0; x < data.length; x++) {
        output <<data.ptr[x];
        if(x == data.length) {
            cout<<endl;
        }
    }
    return output;
}
istream &operator>>(istream &input, Testing &data) {
    for(int x = 0; x < data.length; x++) {
        input >> data.ptr[x];
    }
    return input;
}

我试着在这个网站上搜索解决方案,但没有一个答案对我有效。

Testing tObject(8);
...
cout<<"nEnter 7 numbers" <<endl;
cout<<":: ";
cin>>tObject;

这似乎会试图解析8个数字,而不是7个。你试着输入8个数字了吗?

同样关于"我输入数字并点击回车",用空格分隔单个数字和回车将是相同的,这可能会令人困惑。


此外,此条件语句将永远不会运行,x最多为data.length - 1:

    if(x == data.length) {
        cout<<endl;
    }

此外,复制构造函数没有正确设置lengthptr,而operator=也没有,应该是return *this。。。

Testing tObject(8);
cout<<"nEnter 7 numbers" <<endl;
cin>>tObject;

创建长度为8的tObject,然后提示输入7个数字。我猜你输入了7个数字,所以它正在等待第8个数字。。。