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

Создать класс с 1 полем: динамический массив char - C++

Восстановить пароль Регистрация
 
Aecttann
 Аватар для Aecttann
5 / 5 / 0
Регистрация: 19.10.2013
Сообщений: 257
30.04.2014, 17:30     Создать класс с 1 полем: динамический массив char #1
Необходимо создать класс с 1 полем: динамический массив char. С конструктором, куда передавать динамический массив char. В main создать объект этого класса, передавая в него массив char, который задан в main.
Подправьте, пожалуйста, всё работает корректно но необходимо выделять память для массива в конструкторе и в головном файле:
Хедер:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
##ifndef INTER_H 
#define INTER_H
 
class Kill {
private:
    char *Word;
public:
    Kill (char *W);
    Kill ();
 
    char *getWord();
    void move(char *Wordn);
void print();
    };
#endif  // INTER_H


реализация:
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include "inter.h"
 
using namespace std;
 
Kill::Kill( char *W = new char [20])
 
{
    Word = W;
}
 
Kill::Kill()
 
{
    Word = " "; 
 
}
char *Kill::getWord()
{
 
    return Word;
}
 
void Kill::move(char *Wordn)
{
    Word = Wordn;
}
void Kill::print() 
 
{
    cout  << Word << endl;
}


головной:
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include "inter.h"
 
using namespace std;
 
int main()
 
{
setlocale(LC_ALL, "RUS");
 
Kill target_one("lol1");
Kill target_two;
 
target_one.print();
target_two.print();
 
target_one.move("lol2");
 
target_two.move("lol3");
 
target_one.print();
cout << endl;
 
target_two.print();
cout << endl;
 
cout << "Текущее значение: " << target_one.getWord() << endl;
cout << "Текущее значение: " << target_two.getWord() << endl;
 
    return 0;
}
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
jurok_85
226 / 209 / 70
Регистрация: 21.02.2013
Сообщений: 494
30.04.2014, 17:37     Создать класс с 1 полем: динамический массив char #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
ну вот так можно, тока тут все в одном файле
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
#include <iostream>
#include <cstring>
using namespace std;
 
class dynam_arr{
private:
char* arr;
 
public:
dynam_arr(const char* arr1);
void print()
{
    cout << arr;
}
};
 
dynam_arr::dynam_arr(const char* arr1)
{
    int size = strlen(arr1);
    arr = new char[size+1];
    strcpy(arr, arr1);
    arr[size] = '\0';
}
int main()
{
   char* ch = "abvgde";
   dynam_arr array(ch);
   array.print();
 
    return 0;
 
}
Aecttann
 Аватар для Aecttann
5 / 5 / 0
Регистрация: 19.10.2013
Сообщений: 257
30.04.2014, 18:28  [ТС]     Создать класс с 1 полем: динамический массив char #3
jurok_85, спасибо!

Добавлено через 15 минут
Цитата Сообщение от jurok_85 Посмотреть сообщение
arr[size] = '\0';
для чего необходима эта строка?
просто если её удалить, ничего не меняется
jurok_85
226 / 209 / 70
Регистрация: 21.02.2013
Сообщений: 494
30.04.2014, 18:50     Создать класс с 1 полем: динамический массив char #4
обычно в с++ строки заканчиваются таким символом '\0'. Это для определения последнего символа вывода.
Yandex
Объявления
30.04.2014, 18:50     Создать класс с 1 полем: динамический массив char
Ответ Создать тему
Опции темы

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