我一直在努力寻找答案并让它工作一段时间,所以我想我会在这里检查。我正在尝试通过引用传递指向 long 的指针。我使用的语法是:
int Hex2Loong(long*& bytebuff, int& len, const std::string Hexbuff);
每当我尝试声明函数时都会出现错误。令人惊讶的是,定义本身似乎没有问题。我int*&
在Hex2Int
fcn 中使用与 a 相同的语法,并且没有问题。任何想法我搞砸了什么?
我得到的错误是: 错误:在传递 Hex2Loong(long int*&,int &,const std::string); 的参数 1 中
在相关的说明中,如果我有一个unsigned long *
我认为没有办法转换它,所以我可以将它传递给Hex2Loong
函数,对吗?我将不得不创建临时long *
变量并传递给它们?
Ty 任何答案,Drf
编辑:嗯好的,所以回答一些评论。我传递了一个引用,因为该函数将一个可能很长的十六进制字符串转换为一个 long 数组。(即认为 2^1000 左右的数字写为十六进制字符串),我需要将数字作为长数组传回(我可能会将其重写为无符号长整数,因为没有强制转换使其很麻烦)。
HexString 被声明为 const ,因为它应该是(不应仅修改为只读)。
最后你是对的,错误与声明无关,而是与用法有关。我试图通过(long *) num1
num1 所在的位置的事实把unsigned long *
一切都搞砸了。我仍然不明白为什么错误出现在头文件中,而不仅仅是我实际使用错误参数调用函数的地方。
Edit2:哦,我刚刚意识到您所说的传递是什么意思const std::string&
。当然,你是完全正确的。我也会改变它。这是我用java写太多的东西。我没有意识到字符串实际上会被复制。