3

関数に void* を渡そうとしています。次に、その関数内で動的に作成されたオブジェクトを指すポインターを作成します。これは私がこれまでに持っているものですが、機能していないようです:

主要:

int main()
{
  void* objPtr;

  setPtr(objPtr);
}

セットポイント:

void setPtr(void*& objPtr)
{
  objPtr = new Obj1; 
  (*objPtr).member1 = 10; //error: expression must have pointer-to-class type
}

オブジェクト 1:

struct Obj1
{
  int member1;
};

前もって感謝します

4

2 に答える 2

0

編集:質問の所有者の問題は異なることが判明しました。この回答は、ポインターへのポインターで実装されたものと同じことを表しています。適切なキャストについては、Pete Becker の実際の回答を参照してください。

int main()
{
  void* objPtr;

  setPtr(&objPtr);
}

セットポイント:

void setPtr(void** objPtr)
{
  *objPtr = new Obj1; //where Obj1 is user defined class type
}

ここで行っているのは、C 方式のポインターの受け渡しだけです。setPtr 関数は void ポインターへのポインターを取得し、意図したとおりに void ポインターを設定します。

于 2012-09-03T01:19:03.883 に答える