Как связать 2 переменные в C ++ одна с другой, чтобы, когда одно изменение меняет другое? - PullRequest
0 голосов
/ 24 августа 2010

Как связать 2 переменные в C ++ одна с другой, чтобы, когда одно изменение меняет другое?

например, я создал Int A, а Int B связал одну с другой, а затем, когда я меняю A, используя некоторую функцию, другуюкаждый автоматически изменится на новое значение A.

Меня интересует версия для C ++ .net 4-й версии.

Ответы [ 4 ]

11 голосов
/ 24 августа 2010

Я не знаю о .Net версии C ++, но вы можете использовать ссылки в C ++, чтобы делать то, что вы хотите:

int  A = 0;
int& B = A;
...
A = 10;  // B == 10
B = 100; // A == 100
5 голосов
/ 24 августа 2010

Вы не можете сделать это с ванильными значениями, где-то должна быть косвенность.

Вы можете сослаться на один:

int a;
int& b = a;

a = 5;
assert(b == 5);

Укажите на один:

int a;
int* b = &a; // b points to a

a = 5;
assert(*b == 5);

Или создайте какую-нибудь утилиту для обертывания вышеупомянутого.

2 голосов
/ 24 августа 2010

Как связать 2 переменные в C ++ друг с другом, чтобы, когда одно изменение меняет другое?

Вы ищете концепцию, называемую reference , которая основана на концепции, называемой указатель . Фактическая концепция заключается в том, что вы хотите, чтобы две Thingies указывали на область памяти.

например, я создал Int A и Int B, связанные один с другим, и, когда я меняю A, используя какую-то функцию, другая автоматически изменится на новое значение A.

Вы имеете в виду B изменится на новое значение A, я так понимаю.

int &B = A; создает ссылку B, которая указывает на местоположение, на которое ссылается A.

Другой подход - не лучший подход для начинающих - это:

int *A = new int;  //Get some heap memory for A to point to
int *B = A;        

Это использует указатели.

Меня интересует версия для C ++ .net 4-й версии.

Строго говоря, C ++ является стандартом ISO; .NET не имеет ничего общего с C ++. Однако у Microsoft есть язык C ++ / CLI, который sorta C ++, но на самом деле его нет.

0 голосов
/ 24 августа 2010

Вы отказываетесь от идеи сделать это с фундаментальными типами и делаете A наблюдаемым.

...