Можно ли использовать класс, определенный в другом файле cpp, а не в любом заголовке?


Существует класс C++, который был скомпилирован в библиотеку, но у меня есть доступ к его исходному коду; однако, поскольку класс не определен ни в одном заголовочном файле, я не могу просто включить и затем связать libray. Я не хотел бы изменять исходный код библиотеки, но я надеюсь использовать функции класса для меня, это возможно?

Может быть, extern поможет, но я просто не знаю правильного синтаксиса.

1 2

1 ответ:

Это невозможно (или, по крайней мере, не очень хорошая идея) сделать без "перемещения" объявления класса в заголовочный файл, который используется как библиотекой, так и вашим приложением.

Конечно, технически возможно добавить объявление класса к вашему .cpp-файл (или какой-то заголовочный файл), но это не очень надежно, потому что кто-то может изменить класс в коде библиотеки, и тогда у вас будет несовместимое объявление класса ,которое является "неопределенным поведением" - то есть ваш код будет часто делайте что-то другое, а не то, что вы хотели бы сделать.

Конечно, тот факт, что класс не находится в заголовке, кажется, подразумевает, что он "только для внутреннего использования".