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

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

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

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++ Ошибка инициализации
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2294 / 1664 / 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     Списки инициализации
Ответ Создать тему
Опции темы

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