Простое решение - создать класс, который имеет 8 входов со значениями по умолчанию; установка дополнительных входов на true
для AND и false
для OR приведет к тому, что неиспользуемые входы не окажут влияния на результат.
Например:
class AND
{
public:
AND( bool x0 = false, bool x1 = false, // Required inputs
bool x2 = true, bool x3 = true, // Optional inputs
bool x4 = true, bool x5 = true,
bool x6 = true, bool x7 = true )
{
input( x0, x1, x2, x3, x4, x5, x7, x7 ) ;
}
bool output()
{
return m_x0 && m_x1 && m_x2 && m_x3 &&
m_x4 && m_x5 && m_x6 && m_x5 ;
}
bool input( bool x0, bool x1, // Required inputs
bool x2 = true, bool x3 = true, // Optional inputs
bool x4 = true, bool x5 = true,
bool x6 = true, bool x7 = true )
{
m_x0 = x0 ;
m_x1 = x1 ;
m_x2 = x2 ;
m_x3 = x3 ;
m_x4 = x4 ;
m_x5 = x5 ;
m_x6 = x6 ;
m_x7 = x7 ;
return output() ;
}
private:
bool m_x0, m_x1, m_x2, m_x3,
m_x4, m_x5, m_x6, m_x7 ;
} ;
Примеры использования:
AND z;
bool out = z.input( a, b, c ) ; // three input gate
AND z;
bool out = z.input( a, b, c, e, f, g ) ; // six input gate
AND z( a,b,c,d ) ; // Four inputs
bool out = x.output() ;