class I {
public:
virtual bool F() = 0;
};
class A :public I {
public:
virtual bool F() {
int i = 2;
return i;
}
};
void test() {
A a;
int i=a.F();
std::cout << i;
}
класс I - это протокол, который нелегко изменить.
Хотите передать больше информации, чем true / false, поэтому хотите использовать свойство boint uint8_t в C ++.
Но компилятор (VS2019 / VS2017) добавляет инструкции для преобразования целого числа в 0 или 1 в конце метода bool перед возвратом. Нет разговора на стороне вызывающей стороны (только инструкция movzx eax, al), что хорошо.
Есть ли такой метод, как флаг компиляции или некоторый встроенный код сборки в конце метода bool, чтобы позволить методу bool вернуть целое число, отличное от 0/1?