Инициализировать объект-член в теле конструктора [duplicate]

Чтобы сохранить это и сделать его confortale, вы можете отредактировать файл php.ini. Обычно он хранится в /etc/php.ini или /etc/php/php.ini, но более локальные php.ini могут перезаписать его, в зависимости от рекомендаций по настройке вашего хостинг-провайдера. Проверьте файл phpinfo() для Loaded Configuration File вверху, чтобы убедиться, что последний загружается последним.

Искать display_errors в этом файле. Должно быть только 3 экземпляра, из которых 2 комментируются.

Измените строку без комментирования на:

display_errors = stdout
4
задан Carneiro 8 November 2013 в 05:59
поделиться

2 ответа

Как насчет добавления некоторых статических методов преобразования?

class C {
  private:
    static B transform1(D&);
    static B transform2(D&);
  public:
    A a;
    C(D d) :
      a{transform1(d),transform2(d)}
      {}
};

Связано:

5
ответ дан Community 20 August 2018 в 19:53
поделиться

Я бы использовал указатели в этом случае. Вот модифицированная версия вашего примера:

//Class A is not modified
/* a class without a default constructor */
class A {
  public:
    B x1
    B x2
    A(B x1_, B x2_) : x1{x1_}, x2{x2_} {};
};



/* a class that contains an A object and needs to initialize it based on some complex logic */
class C {
  public:
    A* a;   // I declare this as a pointer
    C(D d)
      {
          // Perform all the work and create b1,b2
          a = new A(b1, b2);
      }

    ~C()    // Create a destructor for clean-up
    {
          delete a;
    }

};

Используя новый оператор, я могу инициализировать объект всякий раз, когда захочу. И поскольку объект находится в области класса, я удаляю его в деструкторе (в конце области видимости класса)

3
ответ дан gldraphael 20 August 2018 в 19:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: