1

私はこのようなものを持っています:

int* a = NULL;
int* b = *a;

b = new int(5);
std::cout << *a;
std::cout << *b;

aからインスタンス化したいbのでa、値は 5 です。これは可能ですか?

編集:

実際のコードは次のようなものです-

int* a = null; //Global variable
int* b = null; //Global variable

int* returnInt(int position)
{
    switch(position)
    {
      case 0:
         return a;
      case 1:
         return b;
     }
}

some other function -

int* c = returnInt(0); // Get Global a

if (c == null)
    c = new int(5);

可能であれば、この方法でグローバル変数をインスタンス化したいと考えています。

4

2 に答える 2

3

参照が必要です:

int* b = NULL;
int*& a = b;

または のいずれabを変更すると、もう一方に影響します。

于 2012-10-01T11:41:40.533 に答える
3
int* a = NULL;
int* b = *a; //here you dereference a NULL pointer, undefined behavior.

あなたが必要

int* b = new int(5);
int*& a = b; //a is a reference to pointer to int, it is a synonym of b
std::cout << *a;
std::cout << *b;

または、aへの参照でintあり、同義語である可能性があります*b

int* b = new int(5);
int& a = *b; //a is a reference to int, it is a synonym of `*b`
std::cout << a;  //prints 5
std::cout << *b; //prints 5
a = 4;
std::cout << a;  //prints 4
std::cout << *b; //prints 4

詳細については、優れた C++ の本を参照してください。

于 2012-10-01T11:42:22.977 に答える