Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> классы 
:(
    Опции темы
mes
Дата 2.5.2009, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(zim22 @  2.5.2009,  09:07 Найти цитируемый пост)
Хорошо. Допустим, мне нужно проинициализировать массив char значением "hello". 
Как вы перепишете код, чтобы buffer инициализировался в initializer list?

буду использовать std::string или другой подходящий контейнер. smile 




--------------------
PM MAIL WWW   Вверх
elenSV
Дата 2.5.2009, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 26.4.2009

Репутация: -1
Всего: -1



Я что то немного запуталась - а где инициализировать
Код

magnitofon():                                    // Конструктор
                play(false),
                stop(false),                           // По-умолчанию все процессы выключены
                rec(false),
                rew(0),
                kasset(false)                         // По-умолчванию кассеты нет
        {
        }


Код

struct Kassete
{
  Kassete() : InsertCount(0),  id(unique_id++){ }
    int InsertCount;
    int id;;
    static int unique_id;
// ..
};


Код


int main() {
  ...
  std::partial_sort(kassete, kassete + 1, kassete + 100, cmp_fcn);
  int max_number = kassete[0].InsertCount;
  int id_kassette = kassete[0].id;
  ...

}

 smile 

PM MAIL   Вверх
zim22
Дата 2.5.2009, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(mes @  2.5.2009,  10:32 Найти цитируемый пост)
буду использовать std::string или другой подходящий контейнер.

допустим, что нельзя использовать string или другие контейнеры  smile 

Я бы в теле конструктора конечно strcpy вызвал, но если нужно в initializer list, то так:
Код

class Foo {  
public:
  Foo() : dummy(init()) { }
private:
  char dummy;  
  char buffer[256];

  char init() {
    strcpy(buffer, "hello");
    return '\0';
  }
};



--------------------
PM MAIL   Вверх
mes
Дата 2.5.2009, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(zim22 @  2.5.2009,  10:01 Найти цитируемый пост)
Я бы в теле конструктора конечно strcpy вызвал, но если нужно в initializer list, то так:

понятно, вместо того чтоб вовремя выйти на ровную тропу, делаем еще один шаг вглубь, так еще и новичкам пример показываем.  smile 


--------------------
PM MAIL WWW   Вверх
elenSV
Дата 2.5.2009, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 26.4.2009

Репутация: -1
Всего: -1



ребятушки расскажите пожлста как это работает:
Код

Kassete() : InsertCount(0),  id(unique_id++){ }
    int InsertCount;
    int id;;
[quote]
    static int unique_id;
// ..
};
int Kassete::unique_id = 0;

bool cmp_fcn(const Kassete &k1, const Kassete &k2) {
  return k1.InsertCount > k2.InsertCount;
}

int main() {
  ...
  std::partial_sort(kassete, kassete + 1, kassete + 100, cmp_fcn);
  int max_number = kassete[0].InsertCount;
  int id_kassette = kassete[0].id;  
  ...

  smile 

PM MAIL   Вверх
zim22
Дата 2.5.2009, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(elenSV @  2.5.2009,  15:22 Найти цитируемый пост)
ребятушки расскажите пожлста как это работает:

когда создаётся объект класса Kassette ему с помощью статической переменной unique_id присваивается уникальное значение.
оно нужно для того, чтобы после применения алгоритма partial_sort сохранились индексы элементов.
алгоритм partial_sort принимает функцию сравнения  cmp_fcn, с помощью которой происходит сортировка элементов по убыванию.
т.е. на первом месте (нулевой индекс массива) будет элемент с макс.значением поля InsertCount
ну а после сортировки мы получаем max_number(сколько раз вставляли кассету) и id кассеты id_kassette


--------------------
PM MAIL   Вверх
EvilsInterrupt
Дата 2.5.2009, 20:08 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Executables research
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 14.7.2007
Где: Железнодорожный, МО, Россия

Репутация: нет
Всего: 9



>>Как вы перепишете код, чтобы buffer инициализировался в initializer list?
Если постараться, то шубу в трусы тоже можно заправить, но по мне кроме майки лучше в трусы ничего не заправлять )

Секция инициализация, соглассно книгам и Скоту Майерса, была задумана для инициализации переменных унарных типов, а-ля bool, int, short int, float, etc . А для массива, это уже тело ф-ции(а конструктор тоже функция, только специальная).
PM MAIL WWW ICQ Jabber   Вверх
elenSV
Дата 3.5.2009, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 26.4.2009

Репутация: -1
Всего: -1



Посмотрите пжлста для этой программы:
разработать класс для представления понятия "контроллер видеомагнитофона"(обеспечивает програмное управление видеомагнитофоном, который может осуществлять запись, выполнять воспроизведение кассеты и осуществлть перемотку в указанном направлении):
Код

class magnitofon
{
   bool play, rec, kasset;        // Процессы: воспроизведение, запись и наличие кассеты
   int rew;                // Процесс перемотки (положительное число - вперёд на заданный интервал, 
                             // отрицательное число - назад на заданный интервал, 0 - бездействие)
public:
   magnitofon()           // Конструктор
   {
      play = false;
      stop = false;       // По-умолчанию все процессы выключены
      rec = false;
      rew = 0;
      kasset = false;    // По-умолчванию кассеты нет
   }
 
   void m_stop()       // Метод останавливает все процессы видеомагнитофона
   {
      play = false;
      rec = false;
      rew = 0;
   }
 
   void m_play()       // Метод включает воспроизведение кассеты
   {
      m_stop();        // Может быть активен только один процесс, поэтому вызывается метод "Stop"
      play = true;
   }
 
   void m_rew(int interval)  // Метод перематывает кассету в заданном направление
   {
      m_stop();
      rew = interval;          // Перемотка на заданный интервал
   }
 
   void m_rec()        // Метод начинает запись
   {
      if (play) rec = true;  // Запись возможна только при включённом процессе play
   }
 
   void insert()              // Метод вставляет кассету
  {
      m_stop();
      kasset = true;
  }
 
   void get()                // Метод достаёт кассету      
  {
      m_stop();
      kaseta = false ;
  }
 
   bool check()            // Метод проверяет, есть ли кассета
   {
      return kasset;      // Возвращает true, если кассета есть, в противном случае false.
   }
};

 smile 
А как это в KDevelop оформить как cpp и h файл - какие директивы подключать
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0560 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.