Значение по умолчанию для bool в C ++ - PullRequest
13 голосов
/ 06 мая 2009

Я перепроектирую конструктор класса в C ++, и мне нужно, чтобы он перехватывал неопределенный тип bool. Я использовал значения по умолчанию для всех других параметров, но из моего понимания bool может быть только инициализирован как true или false. Поскольку оба этих случая имеют значение в классе, как мне обрабатывать проверку на изменение значения по умолчанию?

Ответы [ 13 ]

0 голосов
/ 07 октября 2011

Хорошо, если вы используете функции и классы, просто перегрузите их.

е:

    class thing
{
  public:
   void f1(bool); // bool input
   void f1(int = 3); // default with out bool being known
  private:
   // stuff
};     
void thing::f1 (bool hasAFace)
{
  if(hasAFace)
   f1(0);
  if(!hasAFace)
   f1(1);

}

void thing::f1 (int tri)
{
  bool actionTime;
  if(tri == 1)
    actionTime = true;
   else if(tri == 0)
    actionTime = false;
   else
    //input defualt action here.
} 

// и все. Также вам не нужен класс, вы могли бы просто использовать перегруженные функции.

0 голосов
/ 22 ноября 2009
class aclass
{
    <stuff> lots of other things
    bool mybool
    bool ismyboolinit

    void setmybool(bool b)
    {
        mybool = b;
        ismyboolinit = true;
    }

}
0 голосов
/ 06 мая 2009

Вместо логического выражения используйте перечисление. Например, чтобы контролировать уровень магии:

enum {
    MY_ENUM_NO_MAGIC,
    MY_ENUM_SOME_MAGIC,
    MY_ENUM_MORE_MAGIC
} MagicLevel;

Тогда пусть ваш конструктор примет параметр MagicLevel magic = MY_ENUM_NO_MAGIC.

...