2011-09-12 15 views
2

の変数ですので、C++で作成したクラスをvb.netに変換する必要がありますが、関数の特定の部分を変換する際に問題が発生しました。 「ダブル&」である変数のどのような種類& - > double&

void deg_min_sec2decimal(double deg, double min, double sec, double& dec_deg) 
{ 
    dec_deg = (deg+min/60.0+sec/3600.0); 
} 

、私はダブルを知っているが、「&」とは何ですか? "double & dec_deg"ではありませんので、アドレス(ポインタなど)ではありませんか?

どうすればvb.netに変換できますか?

Grtz

答えて

6

参考になりました。つまり、関数内に値を設定しても、外部から渡された元の変数はその値を持ちます。

は、あなたが関数の結果に渡されていた変数を関数がdouble&を取るのではなく、その式の結果を返す作るByRefまたはを使用して、設定することにより、VBにこれを変換することができます。あなたが前にこれを持っていた場合

ので:あなたは

Dim retval = deg_min_sec2decimal(something, something2, something3) 

にそれを変更したい

double retval; 
deg_min_sec2decimal(something, something2, something3, retval); 

(構文が間違っているかもしれないように、私はVBを知らないが、あなたのアイデアを得ます)

引数で返すものは、通常、複数の戻り値が必要な場合にのみ使用され、その関数は何も返さないため、後者を使用します。

+0

'RETVAL = deg_min_sec2decimal(何か、something2、something3)を暗く' - VB.netでタイプすることなく 'DIM'はCと同様、初期からタイプを推論++ 11 'auto' – MSalters

+0

@MSaltersがそれを手に入れました。そのような間違いのために私の答えを将来的に編集しても構いません。 –

+0

あなたのフォームが許可されているかわかりませんでした。私はちょうどこのフォームが優先されていることを知っています(初期化されていない変数スコープはありません)、私はVB.Netを使ったことが何度かありましたが、私は他のフォームは必要ありませんでした。 – MSalters

5

ダブル&は参照渡しちょうど二重のです。 VB.NETでは、それはByRef dec_deg as Doubleと宣言されます。

EDIT:ただし、void関数を使用して参照で値を設定する代わりに、戻り値の型をdoubleに変更し、変数を参照渡しする代わりに返すことをお勧めします。

2

double&は、ダブルへの言及です。その場合、関数が渡されたパラメータの値を変更できることを意味します。 VBで

、あなたがByRefパラメータで次の操作を行います。
Sub deg_min_sec2decimal(deg as Double, min as Double, sec as Double, ByRef dec_deg as Double)

1

はい、それはアドレスである( "参照" は正しいC++の用語です)。 '&'が左側か右側にあるかどうかは関係ありませんが、C++は空白を気にしません。

double& d; // Same as... 
double &d; 
1

はい、それはアドレスですが、用語は参考情報です。意味、あなたがパラメータにすることは、渡された変数に影響します。 VBにおいて、equivilantはByRefのワードである:

sub someFunc(ByRef someVar as double) 
関連する問題