Здравствуйте, Centaur, Вы писали:
C>Здравствуйте, Sheridan, Вы писали:
C>S>>class Exporting
S>>{
S>>public:
S>> virtual int func() = 0;
S>> virtual float other() = 0;
S>>};
C>
C>Это поломается при использовании между компиляторами с разным размером и/или представлением int и float или разной конвенцией вызовов по умолчанию. На Windows я бы переписал так:
На Windows для этих целей лучше использовать COM.
C>Поскольку такого же вида определения используются в Windows SDK, компилятор, который не обеспечит совместимость, не сможет компилировать виндовые приложения.
C>Ну и если в реализующем классе используются какие-нибудь классы (std::string, контейнеры, etc.), в интерфейсе их показывать нельзя. Можно дать доступ к внутренностям (s.c_str(), s.data(), &*s.begin(), &s[0]), с учётом времени жизни соответствующих ссылок и указателей.
С другой стороны, если всё собирать одним компилятором с одинаковыми настройками, то все эти сложности ни к чему.