首页 > 解决方案 > 我试图显示对象数组,但它给出了错误的输出

问题描述

我正在尝试创建对象数组并显示它但由于某种原因它给出了错误的输出我认为我使用新运算符的方式错误但我不确定出了什么问题

#include<bits/stdc++.h>
using namespace std;
class X {
    string s;
    int b;
public:

    void set(string s,int b ) {
        this->s = s;
        this->b = b;
    }
    void display() {
        cout << this->s << ' ' << this->b << '\n';
    }

};

int main() 
{
    int t;
    cin >> t;
    for (int i = 0; i < t; i++) {
        int n;
        cin >> n;
        X* a = new X[n];
        for (int j = 0; j < n; j++) {
            string s; int b;
            cin >> s >> b;
            a[i].set(s, b);
        }

        for (int i = 0; i < n; i++) {
            a[i].display();
        }

    }
}

输入:1 3 abhi 1 omkar 2 ritesh 3

输出:ritesh 3 0 0

标签: c++new-operator

解决方案


您必须实例化对象数组中的每个对象。并尝试使用getline函数来获取字符串的输入。

#include<bits/stdc++.h>
using namespace std;
class X {
    string s;
    int b;
public:

    void set(string s,int b ) {
        this->s = s;
        this->b = b;
    }
    void display() {
        cout << this->s << ' ' << this->b << '\n';
    }

};

int main() 
{
    int t;
    cin >> t;
    for (int i = 0; i < t; i++) {
        int n;
        cin >> n;
        X *a[n];
        for (int j = 0; j < n; j++) {
            a[j] = new X;
            string s; int b;            
            cin >> s >> b;
            a[j]->set(s, b);
        }

        for (int i = 0; i < n; i++) {
            a[i]->display();
        }

    }
}

希望这可能会有所帮助:)


推荐阅读