私は文字列var x = 2 + 3を持っていると言う。私はeval()を使ってjavasriptで式に変換できます。文字列をevalと同じ実行可能なC++式に変換する方法はありますか(組み込み関数を使うか、コードをカスタマイズする)?私がやるべきことは、1つの可変線形方程式の結果を見つけようとすることです。私はこのコードをC++フォーラムで見つけましたStringを実行可能なC++式に変換する方法はありますか?
#include <iostream>
struct VAR{
float i;
};
struct LINE{//k*x+a
float a, k;
VAR* x;
LINE(){}
LINE(int a) : a(a), k(0), x(0) {}
LINE(VAR& v) : a(0), k(1), x(&v) {}
};
LINE operator + (LINE A, LINE B){//assumes that A.x == 0 or B.x == 0 or A.x == B.x
LINE R;
R.a = A.a + B.a;
R.k = A.k + B.k;
if(A.x) R.x = A.x;
else R.x = B.x;
return R;
}
LINE operator - (LINE A, LINE B){//same as +
LINE R;
R.a = A.a - B.a;
R.k = A.k - B.k;
if(A.x) R.x = A.x;
else R.x = B.x;
return R;
}
LINE operator * (LINE A, LINE B){//assumes that A.x == 0 or B.x == 0
LINE R;
R.a = A.a * B.a;
R.k = A.k * B.a + B.k * A.a;
if(A.x) R.x = A.x;
else R.x = B.x;
return R;
}
LINE operator/(LINE A, LINE B){//assumes that B.x == 0
LINE R;
R.a = A.a/B.a;
R.k = A.k/B.a;
R.x = A.x;
return R;
}
void operator == (LINE A, LINE B){
LINE C = A - B;
C.x->i = -C.a/C.k;
}
int main(){
VAR x;
5 == (2 + (x-7)*10)/2;
std::cout << "x = " << x.i;
std::cin.get();
return 0;
}
その作業は問題ありません。今私がしたいのは、この "5 ==(2 +(x-7)* 10)/ 2;を実行することです。 C++のevalとしてのステートメント
編集1:問題が解決さ:)
ヘッダ&フッタの適切な関数で 'hoge.cpp'に保存しますか? – MikeCAT
eval( "function(arg1、arg2)")のC/C++に相当するものがありますか?](http://stackoverflow.com/questions/11078267/is-there-cc-equivalent-of-evalfunctionarg1- arg2) – computerfreaker
"私が何を意味するか"の機能はまだ発明されていません。 – Art