у меня есть ссылочный конструктор по умолчанию для теста класса.
class test {
public:
test(int &input1) : int_test(input1) {};
~test() {};
int & int_test;
};
Затем еще 2 класса, которые взаимодействуют с тестом следующим образом:
class notebook
{
public:
notebook() {};
~notebook() {};
int int_notebook;
};
class factory
{
public:
factory() {};
~factory(){};
notebook *p_notebook;
};
If i intitalise test (t2)с целым числом, это работает как ожидалось:
int _tmain(int argc, _TCHAR* argv[]){
int var=90;
test t2(var);
cout<<t2.int_test; // this gives 90
var=30;
cout<<t2.int_test; // this gives 30
Как только я инициализировал тестовый класс с указателем на член класса ноутбука через фабрику третьего класса:
factory f1;
notebook s1;
notebook s2;
s1.int_notebook=10;
s2.int_notebook=2;
int notebook::*p_notebook= ¬ebook::int_notebook;
f1.p_notebook=&s1;
test t1(((f1.p_notebook->*p_notebook)));
cout<<t1.int_test; // This gives 10
однако еслия меняю указатель f1.p_notebook на другой объект ноутбука s2;
f1.p_notebook=&s2;
cout<<t1.int_test; // This gives 10
ссылочный член a из t1 (t1.int_test) не отражает изменение указателя.кто-нибудь может объяснить мне, почему?или что я тут не так делаю.