2016-09-30 53 views
-4

でのポインタの値を設定します。は、私はそうのような構造体を持つ構造体

私は単純に行くiint* p1 = new int;ポイントをしたい場合:p1 = &i;

にはどうすればifoo.barポイントを作るのですか?

私は、コンストラクタは次のことを行う必要があると思う:

foo::foo() { 
    bar = new int; 
} 

しかし、私はifoo.barポイントを作る方法がわかりません。

+2

構造体内部部材はC. –

+0

'foo-に有効ではないので、これは間違いC.関数ではありません> bar =&i; ' –

+1

このCまたはC++には質問がありますか?あなたの構造体はCで書かれているのに対し、 'new'キーワードはC++です。 – plasmacel

答えて

0

私はこれを解決しました。

複数の人がメモリリークについて正しくありました。構造体のポインタ部材を欽慕する

typedef struct foo { 
     int *bar; 
} foo; 

int main() { 
    foo fooIn; 
    int i = 2; 

    fooIn.bar = &i; // have the int pointer 'bar' point to the value i; 

    int *barVal = (int*)fooIn.bar; 
    printf("bar points to: %d, *barVal) // prints "bar points to: 2" 

}

0

実際の例では、construtor "foo()"を初期化バーとそれを削除するdtorにする必要があります。 これはメンバーにアクセスする構造体へのポインタを使用するには、どのように単なる例です。

#include <iostream> 
using namespace std; 

typedef struct foo 
{ 
    int* bar; 
    foo(){} 

}FOO, *PFOO; 


int main(int argc, wchar_t *argv[]) 
{ 

    struct foo* ptrFoo = new foo; 
// PFOO pFoo = new foo; // you can use this also 
    ptrFoo->bar = new int(10); 

    cout << ptrFoo->bar << endl; 
    cout << (*ptrFoo).bar << endl; 
    cout << *ptrFoo->bar << endl; 
    cout << *(*ptrFoo).bar << endl; 

    delete ptrFoo->bar; 
    ptrFoo->bar = NULL; 

    delete ptrFoo; 
    ptrFoo = NULL; 


    std::cin.get(); 
    return 0; 
} 
関連する問題