Можно ли использовать класс, определенный в другом файле cpp, а не в любом заголовке?
Существует класс C++, который был скомпилирован в библиотеку, но у меня есть доступ к его исходному коду; однако, поскольку класс не определен ни в одном заголовочном файле, я не могу просто включить и затем связать libray. Я не хотел бы изменять исходный код библиотеки, но я надеюсь использовать функции класса для меня, это возможно?
Может быть, extern
поможет, но я просто не знаю правильного синтаксиса.
1 ответ:
Это невозможно (или, по крайней мере, не очень хорошая идея) сделать без "перемещения" объявления класса в заголовочный файл, который используется как библиотекой, так и вашим приложением.
Конечно, технически возможно добавить объявление класса к вашему .cpp-файл (или какой-то заголовочный файл), но это не очень надежно, потому что кто-то может изменить класс в коде библиотеки, и тогда у вас будет несовместимое объявление класса ,которое является "неопределенным поведением" - то есть ваш код будет часто делайте что-то другое, а не то, что вы хотели бы сделать.
Конечно, тот факт, что класс не находится в заголовке, кажется, подразумевает, что он "только для внутреннего использования".