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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Spiderman5
31 / 31 / 14
Регистрация: 07.04.2014
Сообщений: 219
#1

Уточнение о геттере в классе Строка - C++

06.06.2014, 22:02. Просмотров 192. Ответов 7
Метки нет (Все метки)

Подскажите, пожалуйста, как правильно должен быть реализован такой геттер ?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class String
{
private:
 char* str;
 int length;
*************************************
 
  char* GetStr() const
 {
  char* res;
  res = new char[length + 1];
 
  strcpy(res, str);
  
  return res;
 
  //delete res;
 }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.06.2014, 22:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Уточнение о геттере в классе Строка (C++):

Динамическая строка в классе - C++
Знаю, вопрос наверное тупой, но я недавно c++ начал учить. Столкнулся с одной проблемой. Думаю будет лучше, если покажу наглядно. ...

Operator int() в классе Строка - C++
Приведите пример, пожалуйста, как воспользоваться данной перегрузкой операции в main. String.h class String { private: ...

В классе Строка перегрузить оператор () для приема целочисленных и дробных значений - C++
всем привет, помогите пожалуйста с кодом на перегрузку оператора как перегрузить () - этим строку в число int и double

В классе инициализировать массив, в классе создать функцию вывода массива на экран - C++
Прошу помоши с выводом данных, которые содержаться в массиве, на экраy: Задача: В классе инициализировать массив, в классе создать...

Как обьявить переменную в одном классе и что бы ее было видно в дочернем классе - C++
У меня есть основной класс с названием Root один из его членов наследует дочерний класс SubRoot. Скажите как объявить, что бы один из...

Уточнение по С++11 - C++
Читаю Страуструпа по С++11. Там приведены 2 примера, которые я хочу уточнить. class X2 { X2& operator=(const X2&) =...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.06.2014, 22:25 #2
C++
1
2
3
4
5
 
 const char* GetStr() const
 {
      return str;
 }
Spiderman5
31 / 31 / 14
Регистрация: 07.04.2014
Сообщений: 219
06.06.2014, 22:30  [ТС] #3
Такой геттер нам уже не всегда подходит.
Препод сказал реализовать именно тем способом, взможно он реализован верно, возможно нет.

А в мейне после каждого использования геттера можно использовать delete[] s (объект).
Меня именно смущает, всё ли правильно написано в моём геттере.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
06.06.2014, 22:40 #4
Цитата Сообщение от Spiderman5 Посмотреть сообщение
такой геттер
такой это какой?
Цитата Сообщение от Spiderman5 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
char* GetStr() const
*{
* char* res;
* res = new char[length + 1];
strcpy(res, str);
return res;
//delete res;
*}
плохой геттер.
new[] есть, а кто будет делать delete[] ?
Spiderman5
31 / 31 / 14
Регистрация: 07.04.2014
Сообщений: 219
06.06.2014, 23:00  [ТС] #5
Можно просто сделать так и он будет работать норм ?
C++
1
2
3
4
5
6
7
8
char* GetStr() const
*{
* char* res;
* res = new char[length + 1];
strcpy(res, str);
return res;
delete[] res;
*}
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
06.06.2014, 23:20 #6
Цитата Сообщение от Spiderman5 Посмотреть сообщение
Можно просто сделать так и он будет работать норм ?
нет. ответ дан в посте №2
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6447 / 3094 / 306
Регистрация: 04.12.2011
Сообщений: 8,567
Записей в блоге: 4
06.06.2014, 23:44 #7
Цитата Сообщение от Spiderman5 Посмотреть сообщение
Препод сказал реализовать именно тем способом
Если он не о геттере, а о конструкторе это сказал, то не простит Вам такие слова.
Геттер обеспечивает доступ и может что-то проверить или вычислить, но не создавать.
Spiderman5
31 / 31 / 14
Регистрация: 07.04.2014
Сообщений: 219
07.06.2014, 00:02  [ТС] #8
Конструкторы у нас уже есть, он именно говорил о геттере, чтобы тот не просто возвращал str, а так, как я писал.
В принципе, программа работает с данным геттером раз через раз.
Уточню у него потом, как реализовать правильно.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.06.2014, 00:02
Привет! Вот еще темы с ответами:

Небольшое уточнение - C++
Дан массив. в нем выполняется поиск элемента последовательным или бинарным методами (в зависимости от заданных параметров). вот код полной...

Уточнение по коду - C++
Что возвращает эта строка, если массивы double значений: s = s | s]; Добавлено через 1 час 8 минут Я прошу это уже 3 дня, что,...

уточнение по Объеденениям - C++
Прочитал на http://programmersclub.ru/19/, что Объединения хранят инфу только для одного элемента в данный момент времени, но зделав один...

Уточнение корня уравнения - C++
Условие к программе: Уточнение корня уравнения sin^2*x+a*sin*x-b=0


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
07.06.2014, 00:02
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru