У меня есть бизнес-логика c в отдельной dll, и чтобы иметь возможность экспортировать класс из этой dll для использования, например, GUI классами, мне сказали не передавать никакие объекты шаблона std, такие как std: : вектор через границу интерфейса dll. Тем не менее, мне разрешено передавать ссылки и указатели на объекты типа шаблона.
Когда было бы нормально передать ссылку или указатель на std :: vector (заполненный указателями, если это имеет значение) код за пределами бизнес-логики / через границу DLL (как возвращаемое значение от получателей). Пример:
const std::vector<int*>& getNumbers();
const std::vector<int*>* getNumbers();
Могу ли я всегда к этому? Каковы последствия этих двух альтернатив по сравнению с просто передачей по значению?
Или я должен вообще избегать передачи std :: vector и какие будут альтернативы в этом случае?
РЕДАКТИРОВАТЬ: я знаю, что передача объектов через границы dll проблематична c и вы должен знать, какой компилятор используется et c. Мне интересно, может ли возврат константных ссылок и указателей быть обходным путем в любом случае, поскольку мне сказали, что это так, и если это хорошая практика.