Здравствуйте, гость ( Вход | Регистрация )
wiz29 | Дата 21.8.2012, 15:40 |
Вот тут есть нюанс: если в публичном интерфейсе функция должна возвращать не объект, а только лишь указатель на него, то forward declarartion как раз и позволит "развязать" заголовки. Ну и что с этим указателем дальше делать? Проверить на ноль и успокоиться? |
|
Влад | Дата 20.8.2012, 13:11 |
В вашем случае такой вариант не прокатит, т.к. в публичном интерфейсе вы возвращаете объект, который не собираетесь поставлять. Необходимо экспортировать класс Object и его заголовок тоже таскать. Вот тут есть нюанс: если в публичном интерфейсе функция должна возвращать не объект, а только лишь указатель на него, то forward declarartion как раз и позволит "развязать" заголовки. Другое дело, что, даже имея указатель, но не имея описания самого класса, - нельзя будет обратиться к членам этого класса (дернуть там метод, или обратиться к полю...). Вот тут - придется всяко включать заголовок этого класса. |
|
Snake174 | Дата 20.8.2012, 4:21 |
Спасибо всем за разъяснения. | |
Iron Bug | Дата 17.8.2012, 20:09 |
если интерфейс библиотеки работает с классом, то без объявления этого класса компилятор с ним работать не сможет. ему нужно как-то генерить информацию об объекте. так что описание класса всегда должно присутствовать в заголовочниках. | |
wiz29 | Дата 17.8.2012, 16:49 |
В вашем случае такой вариант не прокатит, т.к. в публичном интерфейсе вы возвращаете объект, который не собираетесь поставлять. Необходимо экспортировать класс Object и его заголовок тоже таскать. примерно так:
|
|
Влад | Дата 17.8.2012, 15:49 |
Используй forward declaration:
|
|
Snake174 | Дата 17.8.2012, 15:01 |
Всем привет. Ситуация такая: пишу динамическую библиотеку. Нужно чтобы в конечном итоге получилось 2 файла (сама библиотека и заголовочный файл с объявлением функций). Заголовочный файл:
Исходник:
object.h
object.cpp
Вопрос такой: можно как-нибудь в файле header.h указать тип Object без включения в него object.h? Не хотелось бы таскать вместе с библиотекой эти файлы. Если в header.h прописать class Object, то при вызове в программе, к которой линкуется данная библиотека, выходит ошибка forward declaration и uninizialized struct Object. |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 26.4.2024, 16:58 |