私は答えを見つけて、これをしばらくの間機能させようとしてきたので、ここで確認することにしました。long へのポインタを参照渡ししようとしています。私が使用している構文は次のとおりです。
int Hex2Loong(long*& bytebuff, int& len, const std::string Hexbuff);
関数を宣言しようとすると、エラーが表示されます。定義自体は驚くほど問題ないようです。int*&
fcn で aとまったく同じ構文を使用していますHex2Int
が、問題はありません。私が台無しにしているアイデアはありますか?
エラー: エラー: Hex2Loong(long int*&,int &,const std::string); の引数 1 を渡す
関連するメモとして、私が持っている場合、unsigned long *
それをキャストする方法がないので、それをHex2Loong
関数に渡すことができますか? long *
それらにキャストされた 一時変数を作成して渡す必要がありますか?
どんな答えでもTy、Drf
編集:うーん、いくつかのコメントに答えてください。この関数はおそらく非常に長い 16 進文字列を long の配列に変換するため、参照を渡します。(つまり、2^1000 程度の数値を 16 進文字列として記述したと考えてください)、その数値を long の配列として返す必要があります (キャストしないと面倒なので、おそらく unsigned long に書き直すことになります)。
HexString は const であると想定されているため、const として宣言されています (読み取りのみを変更するべきではありません)。
そして最後に、エラーは宣言とは関係なく、使用法とはまったく関係がありませんでした。(long *) num1
num1 がどこにあるかを渡そうとしたという事実は、unsigned long *
すべてを台無しにしていました。間違ったパラメーターで実際に関数を呼び出していた場所だけでなく、ヘッダーファイルにエラーが表示された理由はまだわかりません。
Edit2: おっと、 を渡すことの意味がわかりましたconst std::string&
。もちろん、その通りです。それも変えます。それは私がJavaで書きすぎたために得たものです。文字列が実際にコピーされることに気づきませんでした。