所以我有一个用c ++编写的类,需要将它转换为vb.net但是我在转换函数的某个部分时遇到了问题。
void deg_min_sec2decimal(double deg, double min, double sec, double& dec_deg)
{
dec_deg = (deg+min/60.0+sec/3600.0);
}
什么类型的变量是“double&”,我知道双重但是“&”是什么? 它不是“double& dec_deg”所以它不是adres(指针等)?
以及如何将其转换为vb.net?
Grtz
答案 0 :(得分:7)
这是一个参考。这意味着无论您将值设置为函数内部,从外部传入的原始变量都将具有该值。
您可以使用ByRef
或将此转换为VB,使该函数返回该表达式的结果而不是取double&
,并设置您将拥有的变量传入函数的结果。
所以,如果你之前有这个:
double retval;
deg_min_sec2decimal(something, something2, something3, retval);
您将其更改为
Dim retval = deg_min_sec2decimal(something, something2, something3)
(我不知道VB,因此语法可能有误,但你明白了。)
我会选择后者,因为通过参数返回的东西通常只在需要多个返回值时使用,而且该函数甚至没有返回任何内容。
答案 1 :(得分:5)
双&安培;只是通过引用传递的双倍。在VB.NET中,它将被声明为ByRef dec_deg as Double
。
编辑:但是,我建议不要使用void
函数来通过引用设置值,只需将返回类型更改为double
并返回表达式,而不是必须传递变量参考
答案 2 :(得分:3)
double&
是对double的引用。这意味着在这种情况下函数可以更改传递参数的值。
在VB中,您可以通过ByRef
参数执行此操作:
Sub deg_min_sec2decimal(deg as Double, min as Double, sec as Double, ByRef dec_deg as Double)
答案 3 :(得分:3)
是的,它是一个地址(“引用”是正确的C ++术语)。如果'&'并不重要在左边或右边,C ++不关心空格。
double& d; // Same as...
double &d;
答案 4 :(得分:2)
是的,这是一个地址,但术语是一个参考。这意味着,您对参数执行的操作将影响传递给它的变量。在VB中,等效的是ByRef字:
sub someFunc(ByRef someVar as double)