У меня есть группа классов, которые имеют один или несколько членов типа memberA, memberB, memberC. Не у всех классов есть все участники. Я хочу создать шаблон, который будет устанавливать член, такие какпроверка экземпляра шаблона для члена, существующего в классе
template <typename T>
void setAttributes(t & myClass, typeA memA, typeB memB, typeC memC)
{
myClass.memberA = memA;
myClass.memberB = memb;
myClass.memberC = memC;
}
Очевидно, что это произойдет сбой во время компиляции при попытке создать экземпляр класса, который отсутствует один из членов. Есть ли #if или нечто подобное, что позволит проверить, чтобы сделать для условной компиляции формы
не имеют доступа прямо сейчас на самом деле попробовать это или что-нибудь подобное, и я хотел бы знать, если есть правильный способ его настройки.
Я видел ссылки на SFINAE («сбой замены» не является ошибкой.)), Но я не уверен, как он будет использоваться в этом случае. Правильно ли это предложение?
Substitution failure is not an error Пример, казалось бы, подразумевает, что я должен создать отдельную функцию для каждого элемента с дублирующейся функцией без этого члена.
template <typename T>
void setMemberA(T & myClass, typeA memA)
{
myClass.memberA = memA;
}
template <typenum T>
void setMemberA(T & myClass)
{
// This is a dummy template to avoid a compilation problem
}
Возможно, вы захотите использовать SFINAE. – user4098326
@ user4098326 Я видел ссылки на это, но не смог экстраполировать из примеров, приведенных в моем случае. – sabbahillel