Вы копируете переданный вами structport, а не сохраняете ссылку на него (и, в любом случае, указатель здесь более уместен).В вашем class1
определении у вас есть эта строка:
structPort classPort; // just wanted to deal with this inside class
Обратите внимание, что это не ссылка или указатель, это просто значение, поэтому это означает, что в init, когда вы делаете это:
void class1::init(port &_prt){
classPort = _prt; // This copies prt to classPort, not a reference to it
}
Копирует значения в настоящее время в prt
в classPort
, а затем, когда вы изменяете его в class1::changeDummy
, он изменяет только копию в mainClass
, а не глобальный объект.
ВЧтобы достичь своей цели, вам нужно изменить определение class
в class1.h следующим образом:
class class1{
structPort* classPort;
public:
init(structPort* _prt);
changeDummy();
};
с соответствующим изменением на structPort*
в class1.cpp файл, помня его изменить на classPort->dummy = 20;
с classPort.dummy = 20;
.И затем в вашем main.cpp
файле:
mainClass.init(&mainPort);
mainClass.changeDummy();
Однако вам нужно быть осторожным с необработанными указателями в вашем коде и искать умные указатели для своей будущей работы.