0

C++でdllとしてコンパイルした関数があります。問題なく vba 経由でアクセスします。すべて問題なく動作します。

ユーザーが値を指定しない場合、引数の 1 つを特定の値に設定したいと考えています。私はそれを行う方法がわからない、

double __stdcall h2e_q_DLL を試してみました (double & t, double & qi, double & d1, double & n, double & df, double & qa, double & up =1.0 )

最後の値「up」は 1.0 に設定されますが...

私はこれを取得します: 1>c:\users\alex\documents\c++\h2e_project\v2\test\main.cpp(8): エラー C2440: 'デフォルト引数': 'double' から 'double &' に変換できません

解決策を探してみましたが、何も見つかりませんでした。誰か提案はありますか?

ありがとうございました!

4

1 に答える 1

2

It's not easy I'm afraid. The optional argument has to be a VARIANT. See Microsoft docs for details on this structure.

On the C / C++ side, you check the vt field of the variant structure which will be set to the missing type if a value has not been passed. At this point you can do your defaulting logic.

On the Vba side you declare the argument as optional byref variant.

You might be able to supply a default value here ; I'm on the train so can't check.

You'll have fun extracting the data out of the variant; use the vt flag to check th type before extracting the data.

于 2013-05-17T16:48:01.113 に答える