Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Разделить интерфейс и реализацию.


Автор: Хоббит 26.1.2011, 20:54
Хотел добавить в свой класс сериализацию.
Добавил в заголовочный файл
Код

// Объявил конструктор без параметров
...
private:
    friend class boost::serialization::access;
        
    template<class Archive>
    void serialize(Archive & ar, const unsigned int version)
    {
        // Тут сериализация
    }


В этом случае реализация метода serialize находится в заголовочном файле. Хочу перенести реализацию в файл реализации.

В заголовочном оставляю
Код

template<class Archive>
void serialize(Archive & ar, const unsigned int version);


В файле реализации пишу
Код

template<class Archive>
void MyClass::serialize(Archive & ar, const unsigned int version)
{
   // Тут сериализация
}


И получаю ошибку... что-то вроде реализация не найдена... 

Как правильно разделить интерфейс и реализацию для шаблонного метода класса?

Автор: mes 26.1.2011, 21:31
Цитата(Хоббит @  26.1.2011,  19:54 Найти цитируемый пост)
В файле реализации пишу

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


Автор: Хоббит 26.1.2011, 23:43
Спасибо. То что надо.
Видно придется определять реализацию в заголовочном файле. А если говорить точнее в одной единице трансляции, так как экспорт шаблонов мой компилятор не поддерживает.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)