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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.60
Card1nal
6 / 6 / 0
Регистрация: 04.01.2010
Сообщений: 118
#1

Списки инициализации - C++

12.01.2011, 13:02. Просмотров 2435. Ответов 5
Метки нет (Все метки)

Подскажите пожалуйста, как составить список инициализации для конструктра следующего класса?

C++
1
2
3
4
5
6
7
8
9
10
11
12
class Droid{
  public:
  Droid::Droid();
  Droid::~Droid();
 
  private:
  std::string Id;// le matricule cite plus haut                                                                                           
  size_t Energy; //l'energie restante avant de changer les piles                                                                          
  size_t const Attack;// la puissance d'attaque                                                                                           
  size_t const Toughness// sa resistance                                                                                                  
  std::string *Status;  // le statut actuel du droid.                                                                                     
};
Id передается конструктору в качестве параметра, у оостальных естьзначения по умолчанию
И еще - насколько я понимаю, там именно список и нужен? (т.к. const переменные)
Поправьте, если я не прав.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.01.2011, 13:02     Списки инициализации
Посмотрите здесь:

Порядок инициализации предков C++
Какая разница в инициализации? C++
C++ Когда надо использовать списки инициализации, а когда можно заменить их констуктором по умолчанию?
файл инициализации C++
C++ Ошибка инициализации
C++ Ошибка инициализации
Правила объявления инициализации C++
Блок инициализации цикла for C++
Инициализация (ООП, списки инициализации) C++
C++ Ошибка инициализации классов
Ошибка инициализации C++
Конструктор инициализации C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2297 / 1667 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
12.01.2011, 13:17     Списки инициализации #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Droid {
public:
  Droid()
  : id ("id")
  , Energy(1)
  , Attack(2)
  , Toughness(3)
  , Status(0)
  {}
 
  private:
  std::string Id;// le matricule cite plus haut                                                                                           
  size_t Energy; //l'energie restante avant de changer les piles                                                                          
  size_t const Attack;// la puissance d'attaque                                                                                           
  size_t const Toughness// sa resistance                                                                                                  
  std::string *Status;  // le statut actuel du droid.                                                                                     
};
Цитата Сообщение от Card1nal Посмотреть сообщение
И еще - насколько я понимаю, там именно список и нужен? (т.к. const переменные)
Именно.
SashaPinsk
 Аватар для SashaPinsk
39 / 37 / 2
Регистрация: 27.12.2009
Сообщений: 73
12.01.2011, 13:17     Списки инициализации #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <string>
 
using std::string;
 
class Droid
{
public:
    Droid(size_t = 1, size_t = 1, size_t = 1, string = "");
    ~Droid(){};
private:
    string Id;  // le matricule cite plus haut 
    size_t Energy; //l'energie restante avant de changer les piles  
    size_t const Attack;    // la puissance d'attaque                                                                                           
    size_t const Toughness; // sa resistance                                                                                              
    std::string *Status;  // le statut actuel du droid.                                                                                     
};
 
Droid::Droid(size_t temp1, size_t temp2, size_t temp3, string str1) 
    : Attack(temp1), Toughness(temp2)
{
    Id = str1;
    Energy = temp1;
}
Card1nal
6 / 6 / 0
Регистрация: 04.01.2010
Сообщений: 118
12.01.2011, 14:04  [ТС]     Списки инициализации #4
Это все записывается в .h? А как тогда в .cpp его объявить?
SashaPinsk
 Аватар для SashaPinsk
39 / 37 / 2
Регистрация: 27.12.2009
Сообщений: 73
12.01.2011, 14:14     Списки инициализации #5
В заголовочный файл записываются только объявления ф-ций, а их определение в .cpp соответственно. Т.е. твой .h файл:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <string>
 
using std::string;
 
class Droid
{
public:
        Droid(size_t = 1, size_t = 1, size_t = 1, string = "");
        ~Droid();
private:
        string Id;      // le matricule cite plus haut 
        size_t Energy; //l'energie restante avant de changer les piles  
        size_t const Attack;    // la puissance d'attaque                                                                                           
        size_t const Toughness; // sa resistance                                                                                              
        std::string *Status;  // le statut actuel du droid.                                                                                     
};
А сами функции определяешь в .cpp файле.
Card1nal
6 / 6 / 0
Регистрация: 04.01.2010
Сообщений: 118
12.01.2011, 14:34  [ТС]     Списки инициализации #6
Спасибо, разобрался.
Yandex
Объявления
12.01.2011, 14:34     Списки инициализации
Ответ Создать тему
Опции темы

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