Может ли определение класса из одной .lib заменить или расширить определение из другой .lib?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Может ли определение класса из одной .lib заменить или расширить определение из другой .lib?

Сообщение Anonymous »

У меня есть проект Commons.lib, в который я вставляю много повторно используемого кода, который стал слишком большим для его же блага (взлом парсера в нем остановил бы работу в 20 несвязанных проектах и ​​тому подобное) ). Я разделил его, чтобы лучше изолировать его компоненты, но столкнулся со множеством мелких... Наверное, проблем со "связыванием"?
Например, я отделил все функции и классы, обрабатывающие SDL. контент (кросс-платформенный оконный API) в собственный проект CommonsSDL.lib, но некоторые классы, в частности, такие как класс Color, содержат некоторый код, ссылающийся на SDL. Я бы хотел, чтобы Color принадлежал отдельному файлу CommonsCore.lib, который понятия не имеет о существовании SDL, и теперь у него возникла дилемма.

Код: Выделить всё

// inside CommonsCore.lib, which shouldn't depend on SDL

class Color : public glm::u8vec4 {
public:
Color(); // black transparent
Color(glm::u8vec4 color);
Color(uint8 r, uint8 g, uint8 b, uint8 a = 255);
Color(const uint8 * px, Endian en = ENDIAN_DEFAULT);
Color(uint32 hex32);

// all the non-construction methods omitted for brevity;
// no members in definition, besides those inherited from u8vec4
};

Код: Выделить всё

// inside CommonsSDL.lib, which depends on SDL and CommonsCore.lib

class Color : public glm::u8vec4 {
public:
Color(SDL_Color color);

void setSDLColor(SDL_Color color);
SDL_Color getSDLColor() const;
};
Я читал, что невозможно расширить однажды созданное определение класса, по крайней мере, на основе более старой информации C++ 11, которая, вероятно, все еще применима. Во всяком случае, не без написания чего-то, что может серьезно повлиять на поведение Color.
Без расширения можно было бы вместо этого заменить определение Color в CommonsCore.lib< /code> с определением цвета в CommonsSDL.lib? Я был бы не против дублировать общий код, если это необходимо, но не нашел никакой информации об этой возможности.
Я тоже пробовал какую-то ерунду с препроцессором, но пришел к выводу, что понимаю, что это может оказаться невозможным, поскольку .lib уже скомпилированы.
Если альтернативы нет, мне просто придется смириться с этим и вырезать связанные методы. Есть 31 класс с небольшими, но раздражающими проблемами сцепления, похожими на Color, и их исправление меняет их интерфейсы примерно в 20 проектах, поэтому я в темноте ищу способ избежать необходимости делать это... конечно, если это так это так, вот так.

Подробнее здесь: https://stackoverflow.com/questions/684 ... rom-anothe
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»