Динамическое выделение объекта

0

Вот мой код, я пытался выделить память для объекта, задав размер от пользователя. Я не знаю, где я ошибаюсь. Ошибка, которую компилятор мне дает, - это "void value not ignored as it ought to be". Пожалуйста, помогите мне. Заранее спасибо.

#include <iostream>
using namespace std;

class test
{
    char name[20];
    char address[30];
    char desig[20];
public:
    void getData();
    void display();
    ~test()
    {
        cout << "Destructor is invoked";
    }
};

void test::getData()
{
    cout << "Enter your name" << endl;
    cin >> name;

    cout << "Enter address" << endl;
    cin >> address;

    cout << "Enter designation" << endl;
    cin >> desig;
}

void test::display()
{
    cout << "name" << endl;
    cout << name << endl;

    cout << "address" << endl;
    cout << address;

    cout << "Enter designation" << endl;
    cout << desig;
}

int main()
{

    int s;
    cout << "Enter the size of an array" << endl;
    cin >> s;

    test* p1 = new test[s];

    for (int i = 0; i < s; i++)
    {
        *p1[i].getData();
    }

    for (int i = 0; i < s; i++)
    {
        *p1[i].display();
    }

    delete[] p1;
    return 0;
}
Теги:
oop

2 ответа

1
Лучший ответ

Вам нужно изменить:

*p1[i]

Для того, чтобы:

p1[i]
2

Вот:

*p1[i].display();

Вы вызываете display функции-члена, которое возвращает void и пытается разыменовать это.

  • 0
    +1 На самом деле правильный ответ - подчеркнуть: * (p1 [i] .display ())

Ещё вопросы

Сообщество Overcoder
Наверх
Меню