Я начинающий программист C ++ и в настоящее время пытаюсь изменить существующий проект C ++, чтобы сделать его более гибким. Должна быть установлена связь от малиновой шляпы с датчиками:
Связь. cpp
vector<PortMax> ports;
void Communication::Communication_setup() {
// Create hardware setup
hardware = HardwareRaspberry();
hardware.begin();
// Create drivers
Max *pDriver01 = new Max(DRIVER01, &hardware);
Max *pDriver23 = new Max(DRIVER23, &hardware);
// Create ports
ports.push_back(PortMax(pDriver01, PORT0PORT));
ports.push_back(PortMax(pDriver01, PORT1PORT));
// Start communication
for(auto nr: ports) {
nr.begin();
}
uint8_t Communication::getSequence(int port_nr) {
uint8_t retVal = ports.at(port_nr).getSequencePort();
}
PortMax. cpp
void PortMax::begin() {
uint8_t pData[3];
readDirectParameterPage(0x03, pData);
mSequenceType_ = uint8_t((pData[0] >> 1) & 0x07);
cout << "MSequenceType: " << mSequenceType_ << endl;
}
uint8_t PortMax::getSequencePort() {
return mSequenceType_;
}
PortMax.h
class PortMax {
uint8_t mSequenceType_ = 0;
void begin();
uint8_t getSequencePort();
}
У меня проблема в том, что моя переменная (в данном случае mSequenceType_) правильно сохраняется под именем, когда соединение установлено, а также показывает правильное значение в cout. Но как только я выпрыгиваю из функции begin () и хочу получить mSequenceType_ из port0 с помощью getSequence (), возвращается только начальное значение. По этой причине я думаю, что моя переменная назначается только локально, а не для всего моего объекта. Вы видите, что не так с моим кодом?