2017-03-27 31 views
-1

私はサードパーティのライブラリを持っています。私は提供されたコンストラクタの1つを使いたいと思います。C++の奇妙なサードパーティの関数コンストラクタ

ex.h:

/** Construct example from string and a list of symbols. The input grammar is 
* similar to the GiNaC output format. All symbols and indices to be used 
* in the expression must be specified in a lst in the second argument. 
* Undefined symbols and other parser errors will throw an exception.  */ 
ex(const std::string &s, const ex &l); 

私は次のことを試してみました:

symbol x("x"); 

ex e("x^2",x); 

残念ながら、このコンストラクタの使い方が間違っています。 libcの++ abi.dylib

:私は、次のエラーメッセージが表示されますタイプSTDのキャッチされない例外で終了する::例外Invalid_argument:find_or_insert_symbol:記号 "×"

を見つけていないすべてのマニュアルを参照しています宣言の上にあるコメントです。私はC++の初心者ですので、何が間違っているのか分かりません。

私は次のように最初の回答で提案を試してみました:

symbol x("x"); 

ex expression; 
ex e("x^2",expression); 

std::cout << diff(e,x) << std::end 

これは、結果、次のエラーメッセージ

のlibC++ abi.dylib:のキャッチされない例外で終了タイプstd :: invalid_argument:find_or_insert_symbol:シンボル「x」が見つかりません (lldb)

:私はE差分()発現を使用してみました。

+2

このコンストラクタ以外の 'ex'を得る別の方法があるようです。 – Rotem

+4

"残念ながらそれはうまくいきません" - ここに質問を投稿するときはこれを言ってはいけません。何がうまくいかない?どのようなエラーメッセージが表示されますか? –

+0

このサードパーティはいかなる文書も提供していますか? exコンストラクタの2番目のパラメータはex自体です。シンボルは元ですか? – 0xDEFACED

答えて

1

exの参照を提供する必要があります。symbolは参照してください。 これを試してみてください:

ex MyEx1; //This will call to the ex default constructor for MyEx1, if it exist. 
ex e("x^2",MyEx1); //This will call to the ex constructor that you want to use for e. 
関連する問題