Форум программистов, компьютерный форум CyberForum.ru

Не получается получить данные из массива - C++

Восстановить пароль Регистрация
 
ivret
0 / 0 / 0
Регистрация: 18.02.2016
Сообщений: 10
25.08.2016, 16:28     Не получается получить данные из массива #1
person.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#pragma once
 
class Person 
{   
public: 
    Person(); 
    Person(char *data_name); 
    ~Person(); 
    
    char *get_name(); 
    void Print(); 
 
private: 
    char *name; 
    
};
person.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#define _CRT_SECURE_NO_WARNINGS
#include <cstdlib>
#include <cstring>
#include <iostream>
#include "person.h"
using namespace std;
 
 
Person::Person() 
{
    name = new char('\0'); 
    
}
 
 
Person::Person(char *data_name) 
{
    name = new char[strlen(data_name) + 1]; 
    strcpy(name, data_name); 
}
 
 
Person::~Person() 
    {
        delete name; 
    }
 
 
char *Person::get_name() 
{
    return name; 
}
 
 
 
void Person::Print() 
{
    
    cout << "Name: " << get_name() << endl; 
    
}

group.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include "person.h"
 
 
class Group
{
public:
    Group(int n);
    ~Group();
 
    void Print(); 
    int Size();
    void PutPerson(int i, Person& man);
    Person& GetPerson(int i);
    
 
private:
    int num;
    Person* person;
};

group.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include "group.h"
 
Group::Group(int n)
{
    num = n;
    person = new Person[num];
 
}
 
 
Group::~Group()
{
    delete[] person;
 
}
 
void Group::Print()
{
    for (int i = 0; i < num; i++) {
 
        GetPerson(i).Print();
            
    }
}
 
 
int Group::Size()
{
    return num;
}
 
void Group::PutPerson(int i, Person& man)
{
    person[i] = man;
}
 
Person& Group::GetPerson(int i)
{
    return person[i];
}


main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <cstdlib>
#include <string.h>
#include <iostream>
#include "person.h"
#include "group.h"
 
 
int main(int argc, char *argv[])
{   
    
 
    char name[5][25] = {"IVAN"};
    
    Group group(1);
 
 
    for (int i = 0; i < group.Size(); i++)
    {
        Person qwert(name[i]);
        group.PutPerson (i, qwert);
    }
 
    group.Print();
 
 
    system("pause");
    return 0;
}
Есть класс Person, который содержит массив name.
В файле person.cpp реализую конструктор с параметром name.
Создаю функцию get_name с помощью которой буду возвращать name.
И создаю функцию Print с помощью которой вывожу name на экран.
Затем в group.cpp создаю класс Group, который содержит массив объектов Person.
В файле group.cpp создаю функцию Size с помощью которой возвращаю размер массива, функцию PutPerson c помощью которой заношу данные в массив, функцию GetPerson с помощью которой возвращаю данные из массива и функцию Print с помощью которой вывожу данные на экран.
В функции Print применяю функцию Print для объекта Person.
В файле main.cp определяю массив char name[5][25] = {"dfdfdf"};
Затем с помощью функции PutPerson заношу данные в массив.
Затем вывожу данные на экран с помощью функции Print.
Вместо IVAN получаю каракули.
Где может быть ошибка?
Миниатюры
Не получается получить данные из массива  
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.08.2016, 16:28     Не получается получить данные из массива
Посмотрите здесь:

C++ Получить данные из другой программы.
Внедрение DLL: Не получается вытащить данные из listview чужой программы. C++
C++ Не получается изменить данные в бинарном файле
C++ С помощью методов ввести данные, вывести данные из массива
C++ Функция с указателем на void** не получается вернуть данные?
Получить данные из книги Excel C++
C++ Если максимальный элемент массива А больше минимального элемента массива В, поменять данные элементы местами
C++ Не получается получить массив, заполненный случайными числами

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nd2
1055 / 794 / 267
Регистрация: 29.01.2016
Сообщений: 2,472
25.08.2016, 16:48     Не получается получить данные из массива #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Распространенные ошибки
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
25.08.2016, 16:48     Не получается получить данные из массива #3
Цитата Сообщение от ivret Посмотреть сообщение
Где может быть ошибка?
У Person нет конструктора копирования и копирующего присваивания, который должен скопировать передаваемой ему имя.

ПС. Да и вообще он некорректен.
Yandex
Объявления
25.08.2016, 16:48     Не получается получить данные из массива
Ответ Создать тему
Опции темы

Текущее время: 13:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru