Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.10.2011, 23:22   #1
AJlekceu
Пользователь
 
Регистрация: 20.11.2010
Сообщений: 16
По умолчанию VC++ 2010, проблема с линковой и шаблонами

Уважаемые форумчане!
Помогите, пожалуйста, разобраться.
Есть MFC-проект Visual C++ 2010, называется Game. Вот список файлов:
h-файлы------
Game.h
GameDlg.h
Resource.h
stdafx.h
targetever.h
Unit1.h
Unit2.h
cpp-файлы----
Game.h
GameDlg.h
stdafx.h
Unit1.h
Unit2.h
--------------
Из всех них файлы Unit1.* и Unit2.* созданы мной как модули, где будут храниться специальные классы.
Код Unit2.h таков:
Код:
#pragma once

template<class T>
class myADT
{
public:
    void Foo(T k);
};
Код Unit2.cpp:
Код:
#include "StdAfx.h"
#include "Unit2.h"

template<class T>
void myADT<T>::Foo(T k) {

}
Код Unit1.h:
Код:
#pragma once
#include "Unit2.h"

class engine
{
public:
    engine(void);
    myADT<int> KOKO;
};
Код Unit1.cpp:
Код:
#include "StdAfx.h"
#include "Unit1.h"

engine::engine(void)
{
    KOKO.Foo(99);
}
Попытка компиляции проваливается: ругается на то, что я якобы не дал определение функции Foo класса myADT - выдаёт ошибку
unresolved external symbol "public: void __thiscall myADT<int>:(int)" (?o@?$myADT@H@@QAEXH@Z) referenced in function "public: __thiscall engine::engine(void)" (??0engine@@QAE@XZ)C:\Users\AJlekce u\Desktop\Game222\Game\Game\engine. obj

При этом, если класс myADT не был бы шаблонным, а вместо T везде стоял бы, например, тот же int, никаких проблем не возникло бы. В чём дело?
Вероятно, в чём-то совсем простом, но я новичок в VS.

Последний раз редактировалось AJlekceu; 01.10.2011 в 23:37.
AJlekceu вне форума Ответить с цитированием
Старый 02.10.2011, 00:41   #2
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

описание и реализация шаблонного класса должны быть в одном файле (Unit2.h)
counter вне форума Ответить с цитированием
Старый 02.10.2011, 09:08   #3
AJlekceu
Пользователь
 
Регистрация: 20.11.2010
Сообщений: 16
По умолчанию

Хм, работает. Спасибо! Хотя и как-то странно и в С++ Builder'е такого не было.
AJlekceu вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с VS 2010 koma3 Visual C++ 2 25.09.2011 12:17
Проблемы с шаблонами Syuf Общие вопросы C/C++ 8 11.09.2011 22:32
Проблема с Delphi 2010 gisinfo Общие вопросы Delphi 1 05.12.2010 23:16
Помогите пожалуйста с ШАБЛОНАМИ<Template> Suren Общие вопросы C/C++ 2 16.06.2009 19:16
Работа с шаблонами Viteef PHP 3 30.07.2007 03:39