ポインタを必要とする関数への参照を渡す方法をここで確認したいだけです。以下のコード例があります。私の場合は、私の価値を変えるC関数へのC++参照を渡しています。C関数のポインタ引数にC++参照を渡すにはどうすればよいですか?
この呼び出しでoperatorのアドレス「&」を使用する必要があります:retCode = MyCFunc(& myVar)?私はC + +で許可されていない参照の参照を取っているようです。しかし、それはうまくコンパイルされ、動作するようです。
MainFunc()
{
int retCode = 0;
unsigned long myVar = 0;
retCode = MyCPlusPlusFunc(myVar);
// use myVars new value for some checks
...
...
}
int MyCPlusPlusFunc(unsigned long& myVar)
{
int retCode = 0;
retCode=MyCFunc(&myVar);
return retCode;
}
int MyCFunc (unsigned long* myVar)
{
*myVar = 5;
}
私は(彼らは演算子の「&」のアドレスを使用して渡すことはありません)私はIBMのサイトでこの例を見るまで、大丈夫だった私のコードは、上記と思った: http://publib.boulder.ibm.com/infocenter/zos/v1r11/index.jsp?topic=/com.ibm.zos.r11.ceea400/ceea417020.htm
// C++ Usage
extern "C" {
int cfunc(int *);
}
main()
{
int result, y=5;
int& x=y;
result=cfunc(x); /* by reference */
if (y==6)
printf("It worked!\n");
// C Subroutine
cfunc(int *newval)
{
// receive into pointer
++(*newval);
return *newval;
}
一般的に
、私はあなたが次のことを行うことができます知っている:
int x = 0;
int &r = x;
int *p2 = &r; //assign pointer to a reference
何が正しいですか?私は電話でオペレータの&のアドレスを使用する必要がありますか?
編集フォームの適切なボタンを使用してコードを修正してください。 – Muggen
@Muggen - 私はすでにそれをしました –
ありがとう...今より良く見えます! – Lair78