-1

それはばかげているかもしれませんが、私はここで夢中になります..

main のテスト関数の後に pTest が新しい int を指していないのはなぜですか? セグフォルトの原因となります。そして、どうすればそれを行うことができますか。

私の実際のコードでは、ポインターを渡してオブジェクトを動的に作成する必要があります。これは、pTest が仮想クラスのサブクラスであるためです (ファイルから読み取るため、事前にわかりません)。

void test(int* pTest)
{
    int *p = new int(2);
    pTest = p;
    std::cout << "pTest : " << *pTest << std::endl;
    return;
}

int main()
{
  int *pTest = NULL;
  test(pTest);
  std::cout << "pTest : " << *pTest << std::endl;

  return 0;
}
4

2 に答える 2

2

パラメータとして渡された値を変更したい場合は、それへのポインタを提供する必要があります。つまり、指定された int の値を変更する場合は、 int* を渡します。あなたの場合、 int* を変更して、代わりに int** として渡す必要があるようにします。

于 2013-10-29T14:37:13.333 に答える
1

この関数の範囲外で値を変更するvoid test(int*& pTest)場合は、pTest を参照渡しする必要があります。pTest

void test(int*& pTest)
{
    int *p = new int(2);
    pTest = p;
    std::cout << "pTest : " << *pTest << std::endl;
    return;
}
于 2013-10-29T14:34:15.413 に答える