Чтобы сохранить это и сделать его confortale, вы можете отредактировать файл php.ini. Обычно он хранится в /etc/php.ini
или /etc/php/php.ini
, но более локальные php.ini
могут перезаписать его, в зависимости от рекомендаций по настройке вашего хостинг-провайдера. Проверьте файл phpinfo()
для Loaded Configuration File
вверху, чтобы убедиться, что последний загружается последним.
Искать display_errors в этом файле. Должно быть только 3 экземпляра, из которых 2 комментируются.
Измените строку без комментирования на:
display_errors = stdout
Как насчет добавления некоторых статических методов преобразования?
class C {
private:
static B transform1(D&);
static B transform2(D&);
public:
A a;
C(D d) :
a{transform1(d),transform2(d)}
{}
};
Связано:
Я бы использовал указатели в этом случае. Вот модифицированная версия вашего примера:
//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;
}
};
Используя новый оператор, я могу инициализировать объект всякий раз, когда захочу. И поскольку объект находится в области класса, я удаляю его в деструкторе (в конце области видимости класса)