Экспорт p-impl из dll
От: Chorkov Россия  
Дата: 24.07.23 10:35
Оценка:
Коли уж обсуждаю борьбу с предупреждениями...

Как побороть:
class __declspec(dllexport) Foo
{
private:
   struct Impl;
   std::shared_ptr<Impl> p_impl; // warning: C4251: 'Foo::p_impl': class 'std::shared_ptr<Foo::IImpl>' needs to have dll-interface to be used by clients of class 'Foo'

public:
// Все конструкторы/деструкторы заданы явно либо запрещены:
   Foo();
   Foo(const Foo&);
   ~Foo();
   Foo& operator=(const Foo&) = delete;

// Доступ к структуре объекта (на стороне dllimport) ненужен, 
// На стороне пользователя может оказаться другой размер класса shared_ptr?
  
// ... что-то для работы с классом. 
   int do_work(int);
};


И что можно сделать для избежания предупреждения?
Перейти на голый указатель?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.