Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Помогите разобраться с инклюдами в файлах реализации!

5.3K
20 сентября 2006 года
!Волк
95 / / 19.07.2006
Короче есть два заголовочных файла ну и соответственно 2 файла реализации:
Код:
//----------------------------------------------------------------
//файл Ser.h
#include "Testchabl.h"
#include "stdafx.h"
SerializeObject SerObj;

void AAATest::SerializeObjectForFile()
{
    SerObj.SerializeStandartType(1);
   
}
//------------------------------------------------------------
//файл Ser.ccp
#include "stdafx.h"
#include "Ser.h"
//#include "Testchabl.h"
template <class Type>
void SerializeObject::SerializeStandartType( Type StandartType)     // для стандартных типов
{
    int SizeType=sizeof(Type);
    for(int i=0;i<SizeType;i++)
        VBuff=(*(reinterpret_cast<char*>(&StandartType)+i));

}

extern SerializeObject SerObj;
//--------------------------------------------------------------
// файл Testchabl.h
#if !defined(Testchabl)
#define Testchabl
#include "Ser.h"
extern SerializeObject SerObj;
class AAATest
{
private:
    int IVarA; 
public:
    void SerializeObjectForFile();
};
//-------------------------------------------------------------------------------
#endif
//---------------------------------------------------------
// файл  Testchabl.ccp
#include "Testchabl.h"
#include "stdafx.h"
SerializeObject SerObj;

void AAATest::SerializeObjectForFile()
{
    SerObj.SerializeStandartType(1);/*если эту строчку закоментировать-все работает*/  
}
//------------------------------------------------------
/*Ну и файл stdafx.h на всякий случай, в нем мной добавлено тока последние две строчки, поэтому пишу для компактности тока их*/
#include "Testchabl.h"
#include "Ser.h"
//---------------------------------------------------

Вот что пишет компилятор:
Error 1 error LNK2019: unresolved external symbol "public: void __thiscall SerializeObject::SerializeStandartType<int>(int)" (??$SerializeStandartType@H@SerializeObject@@QAEXH@Z) referenced in function "public: void __thiscall AAATest::SerializeObjectForFile(void)" (?SerializeObjectForFile@AAATest@@QAEXXZ) testchabl.obj

Error 2 fatal error LNK1120: 1 unresolved externals C:\Documents and Settings\ВИРУС\Мои документы\Visual Studio 2005\Projects\FileWin\TestChablon\Debug\TestChablon.exe 1

При этом, если оба класса обьявить в одном H файле и файл реализации соответственно общий сделать, все работает. Если шаблонную функцию SerializeStandartType сделать обычной, тоже все работает. Если закомментировать строчку SerObj.SerializeStandartType(1);, тоже все работает. В чем проблема то.???
395
20 сентября 2006 года
RelB
367 / / 09.11.2002
Ну сколько раз уже обсуждалось, что реализацию шаблона нельзя выносить в cpp!
5.3K
20 сентября 2006 года
!Волк
95 / / 19.07.2006
Ооо, спасибо.))
А то я 2 часа потратил, пока весь код не вырезал, и так и не нашел ошибки.)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог