void f( MyClass obj ){
if( obj ){
}
}
В моменте if( obj )
хотелось бы чтобы вызывался какой-то перегруженный оператор, или ещё что.
Реально ли сделать подобное?
Вкратце - если у вас есть оператор приведения к bool
(или чего-то, что приводится к bool
, и без неоднозначностей), то можно.
class Test {
public:
Test(int x = 0):val_(x){ cout << "Test(" << x << ")\n"; }
~Test() { cout << "~Test(" << val_ <<")\n"; }
operator int() const { cout << "Test::operator int(" << val_ <<")\n"; return val_; }
operator bool() const { cout << "Test::operator bool(" << val_ <<")\n"; return val_; }
private:
int val_ = 0;
};
int main(int argc, const char * argv[])
{
Test t(5);
if (t)
{
cout << "true\n";
}
}
Можете выкинуть оператор bool
и посмотреть на результат.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
когда строка начинаеться ")" с этой скобкой выдает ошибку или с этой "}" что делать?
Задача не проходит один из тестов проверяющей системыВ чём ошибка?
Есть основной класс MainWindow, для находящегося внутри QGraphicsView установлен viewPort от GraphWidget, наследуемого от QGraphicsView класса:
Например, функции fopen, getch