:
#include <iostream>
struct Expr {
int value;
enum oper { plus = '+', minus = '-', times = '*', div = '/', nop = 0 } op;
Expr(int value, oper op) : value(value), op(op) { }
Expr(int value) : value(value), op(nop) {}
Expr operator+() { return Expr(value, plus); }
Expr operator-() { return Expr(value, minus); }
Expr operator*() { return Expr(value, times); }
Expr operator,(const Expr& rhs) {
Expr result(value, op);
switch(op) {
case '+': result.value += rhs.value; break;
case '-': result.value -= rhs.value; break;
case '*': result.value *= rhs.value; break;
case '/': result.value /= rhs.value; break;
}
return result;
}
};
int main() {
Expr x(0), a(1), b(2);
x = (+ a , b);
std::cout << x.value << "\n";
}
あなたは、 '= +'を意味するために何をしたいですか?書いたように、これは代数的なナンセンスです。 –
いいえ、LispをC++で書く方法はありません。 (同時に、 'x = + a'は動作しますが、' x = + a b'は動作しません) –
@JohnDibling:彼は[Prefix Notation](http://en.wikipedia.org/wiki/Polish_notation)を記述しています。 –