// globally accessible variable. can be changed at runtime.
bool feature_flag = true
Class A
{
UtilityClass obj_util;
A(int x,int y,int z)
{
}
}
Class UtilityClass
{
UtilityClass()
{
}
}
Main()
{
A a(10,20,30);
}
Когда создается объект для A, он создает экземпляр объекта UtilityClass внутри A и поэтому вызывает конструктор UtilityClass ().
Мой новый сценарий и проблема:
когда feature_flag активирован (true), некоторые компоненты не будут доступны в UtilityClass (не спрашивайте меня, как), поэтому вызов конструктора UtilityClass () не будет выполнен.
Чтобы избежать этой ошибки,
1 ) Я хочу, чтобы член obj_util был удален, когда feature_flag = true
как
Class A
{
if(feature_flag == false)
UtilityClass obj_util;
A(int x,int y,int z)
{
}
}
(или)
2) Я не хочу, чтобы конструктор UtilityClass () был Вызывается при создании объекта в A. Я также не хочу преобразовывать UtilityClass в классе A в UtilityClass *, чтобы избежать вызова конструктора, так как существует огромный код, связанный с этим объектом в классе A, и требует изменения во многих компонентах внутри. Но я почти уверен, что ни один из этих путей кода не будет достигнут, когда feature_flag = true.
Я хочу, чтобы оба сценария ios сосуществовали только с решающим условием одного флага (feature_flag). Возможно ли это даже в c ++?
Я что-то слышал о std :: conditional, но не понял, могу ли я применить его в следующем сценарии.
Например, следующее не сработало
// globally accessible variable. can be changed at runtime.
bool feature_flag = true
Class A
{
std::conditional <feature_flag, UtilityClass, DummyClass> obj_util;
A(int x,int y,int z)
{
}
}
Кроме того, я попытался вставить std :: conditional в файл .h, потому что все определения классов присутствуют в файлах .h в моем проекте, и это также, похоже, не работает.
Обратите внимание, что я не могу создать фиктивный конструктор в UtilityClass или в этом отношении не могу изменить код для UtilityClass.
Любые советы или предложения приветствуются. Спасибо