В условии этого оператора if
if (mainMenu)
логический оператор отрицания !
не используется.
Вместо этого вы можете написать, например,
if ( !!mainMenu )
Однако лучше объявить явный оператор преобразования, такой как
explicit operator bool() const;
В этом случае вы можете написать
if (mainMenu)
Вот демонстрационная программа, которая показывает разницу между этими операторами.
#include <iostream>
struct A
{
bool operator !() const
{
return false;
}
explicit operator bool() const
{
return true;
}
};
int main()
{
if ( !!A() ) std::cout << "Hello\n";
if ( A() ) std::cout << "World!\n";
return 0;
}
Вывод программы:
Hello
World!