crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Предварительное объявление класса, Проблема при объявлении пользовательского типа
Snake174
  опции профиля:
сообщение 17.8.2012, 15:01
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 89
Регистрация: 18.4.2011
Из: Миасс
Пользователь №: 2613

Спасибо сказали: 9 раз(а)




Репутация:   0  


Всем привет.
Ситуация такая: пишу динамическую библиотеку. Нужно чтобы в конечном итоге получилось 2 файла (сама библиотека и заголовочный файл с объявлением функций).

Заголовочный файл:
#ifndef HEADER_H
#define HEADER_H

#ifdef WIN32
  #include <windows.h>
  #define EXPORT __declspec(dllexport)
#else
  #define EXPORT __attribute__((visibility("default")))
#endif

EXPORT Object *GetObject();

#endif // HEADER_H


Исходник:
#include "header.h"
#include "object.h"

#ifdef WIN32
BOOL WINAPI DllMain( HINSTANCE /*hinstDLL*/, DWORD /*fdwReason*/, LPVOID /*lpvReserved*/ )
{
  return TRUE;
}
#endif

Object *GetObject()
{
  return pObject.GetObject();
}


object.h
class Object
{
  public:
    Object();
    Object *GetObject();
};

extern Object pObject;


object.cpp
Object::Object
{
}

Object *Object::GetObject()
{
  Object *obj = new Object();
  return obj;
}

Object pObject;


Вопрос такой: можно как-нибудь в файле header.h указать тип Object без включения в него object.h? Не хотелось бы таскать вместе с библиотекой эти файлы.
Если в header.h прописать class Object, то при вызове в программе, к которой линкуется данная библиотека, выходит ошибка forward declaration и uninizialized struct Object.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 29.5.2025, 8:02