У меня есть такое определение класса:Как вернуть первый операнд, если второй операнд + перегрузки оператора равен нулю в C++?
class foo{
public:
foo();
foo(const int& var);
foo(const foo& var);
~foo();
const foo operator +(const foo& secondOp) const;
private:
int a;
//plus other values, pointers, e.t.c.
};
Кроме того, я сделал эту реализацию для '+' перегрузкой операторов:
const foo foo::operator +(const foo& secondOp) const{
//I want here to check if i have one operand or two...
if ((FIRST_OPERAND.a!=0) && (secondOp.a==0)){
cout << "ERROR, second operand is zero";
return FIRST_OPERAND;
}
else if ((FIRST_OPERAND.a==0) && (secondOp.a!=0)){
cout << "ERROR, first operand is zero";
return secondOp;
}
}
Когда я пишу в main()
:
foo a(2);
foo b;
foo c;
//I want here to print the ERROR and
//return only the values of a
c = a + b;
- Ηow может i
return
значение первого операнда, если второй операнд равен нулю, а vic и наоборот?
Имейте 'operator +' возвращать объект некоторого произвольного типа с соответствующей информацией и перегружать 'operator =' только для этого типа. – 0x499602D2
Если второй операнд отсутствует, ваш код будет выглядеть примерно так: 'c = a +;', правильно? Это просто не будет компилироваться. –
Можете ли вы уточнить? С примером кода? @ 0x499602D2 – MinimalTech