0

それが構造体startup_infoへのポインタであることを理解していますSTARTUPINFO

参照によって startup_info を渡す関数があります。したがって、参照によってポインターを渡していると言えます

void cp(....., LPSTARTUPINFO & startup_info) {
  CreateProcessW(....., startup_info);
}

この関数 caller() で関数 cp を呼び出すと仮定しましょう

void caller() {
  STARTUPINFO startup_info; 
  cp(....., startup_info); // error occurs here, I cannot convert 'STARTUPINFO' to 'LPSTARTUPINFO &'
}

エラー メッセージが表示されます: CreateProcessW のエラー: パラメータ 9 を 'STARTUPINFO' から 'LPSTARTUPINFO &' に変換できません

しかし、statup_info はポインタなので、これを関数 cp に渡すことができるはずですよね?

編集:アドバイスありがとうございますが、私にとっては次のように機能します: 構造LPSTARTUPINFOへのポインタですSTARTUPINFO

だから私はに変更します

void cp(....., LPSTARTUPINFO startup_info_ptr) {
      CreateProcessW(....., startup_info_ptr); // pass in pointer of startup_info
}

void caller() {
      STARTUPINFO startup_info; 
      cp(....., &startup_info); // passing the address of startup_info
}
4

1 に答える 1

2

あなたは2つ持っていますstartup_info。ではcaller()STARTUPINFO(ポインタではなく) です。ではcp()STARTUPINFO*&(ポインターへの参照) です。なんで?それはおそらく意図的ではありません。

私は期待します:

void cp(....., STARTUPINFO* pStartup_info) {
  CreateProcessW(....., pStartup_info);
}
void caller() {
  STARTUPINFO startup_info; 
  cp(....., &startup_info);
}

本番コードでは、pポインターの接頭辞を避けていますが、ここではそれを使用して、あなたが持っていた 2 つの を明確にしstartup_infoています。

于 2011-09-27T07:49:18.113 に答える