Я относительно новичок в C ++ OOP, поэтому, пожалуйста, будьте терпеливы со мной.
Я использую драйверы сторонних производителей для протокола шины CAN, который реализован для выделенного оборудования (модуль PCIE).Он поставляется с классом, который позволяет создавать экземпляры can_read
и can_write
объектов.
Эта библиотека используется в моей собственной программе, где у меня есть класс и 7 экземпляров вышеупомянутого класса, которым требуется доступ к can_write
объект, который определен в глобальной области видимости в основном файле.
У меня проблема с can_write
объектом.В качестве библиотеки уровня драйвера он получает доступ к тому же адресу памяти из объекта can_write
.Если у меня есть функция-член, которая принимает can_writer
по значению, программа завершает работу всякий раз, когда к ней обращаются с ошибкой «двойное освобождение или повреждение».
Теперь я передаю объект can_writer
по ссылке («CanClass & a«для аргумента), и это, кажется, работает, однако я не уверен, является ли это хорошей практикой или обычным способом сделать это.Это правильный способ сделать это?Если нет, то каков правильный путь?Любые ссылки или даже краткое объяснение были бы очень полезны!
РЕДАКТИРОВАТЬ: я должен избегать создания копий can_writer
, так как это приведет к повреждению памяти, следовательно, все 7 экземпляров моего Class Foo
должны получить доступ кточно такой же экземпляр can_write
.