Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
loou
1 / 1 / 0
Регистрация: 02.08.2013
Сообщений: 29
#1

Деструктор шаблона описанный в отдельном файле не линкуется. Почему? - C++

04.08.2013, 17:58. Просмотров 416. Ответов 2
Метки нет (Все метки)

Есть такой код: файл "a.h"
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
template < typename T>
class A
{
public:
    A() { a=0; std::cout <<"c A"<< std::endl; }
    ~A();// { if(a) delete[] a; }
protected:
    T *a;
};
 
template < typename T>
A <T> ::
~A()
{ if(a) delete[] a; }
если все в одном файле - все ок.

Переношу ~A() в c.cpp - пишет:
Error error LNK2001: unresolved external symbol "public: __thiscall A<double>::~A<double>(void)" (??1?$A@N@@QAE@XZ)

файл "a.cpp"
C++
1
2
3
4
5
6
7
#include <iostream>
#include "a.h"
 
template < typename T>
A <T> ::
~A()
{ if(a) delete[] a; }
main:
C++
1
2
3
4
5
6
7
8
#include <iostream>
#include "a.h"
 
int main()
{
    A<double> x;
    return 0;
}
В чем дело может быть?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.08.2013, 17:58     Деструктор шаблона описанный в отдельном файле не линкуется. Почему?
Посмотрите здесь:

Как использовать класс описанный в другом файле - C++
Есть проект, несколько файлов, в одном из них описаны классы. Как использовать эти классы в других файлах?

Почему не работает деструктор? - C++
Собственно говоря, почему? #include &lt;iostream&gt; using namespace std; class Osoba{ public : char* imie; int wiek; ...

Почему не вызывается деструктор? - C++
Всем доброго времени суток! Подскажите пожалуйста - почему не вызывается деструктор при выполнении строки 48? #include&lt;iostream&gt;...

Почему не отрабатывает деструктор? - C++
class test { public: double *b; test(); ~test(); } test::test() {

Почему деструктор не работает? - C++
Вроде написал все правильно, а почему то деструктор не работает, данные HI не выводит, почему ? #include &lt;iostream&gt; using namespace...

Почему вызывается деструктор? - C++
Доброго времени суток. Написал такой код: struct O { virtual ~O() { cout &lt;&lt; &quot;hey&quot;; } }; struct...

Почему не работает деструктор? - C++
Подскажите пожалуйста, почему у меня не работает деструктор? #include &lt;iostream.h&gt; #include &lt;string.h&gt; #include &lt;conio.h&gt; ...

Почему может не работать деструктор? - C++
#include &lt;iostream&gt; #include &lt;string.h&gt; using namespace std; class Person { private: char* name; public: Person(char*...

Почему деструктор работает неправильно? - C++
на лабараторной столкнулся в проблемой. деструктор вызывается только один раз. #include &lt;cstring&gt; #include &lt;iostream&gt; using...

почему деструктор работает вначале? - C++
#pragma once class Student { private: char* name; int course; public: Student(void); ~Student(void); ...

Функция в отдельном файле - C++
Всем привет! Учусь писать код в разных файлах, возникла проблема с подобным кодом: main.cpp #include &lt;iostream&gt; #include...

Переменные в отдельном файле - C++
Есть вот такая программка из нескольких файлов. Компилируется без ошибок. А сам вопрос в комментарии. file01.h #ifndef FILE01_H_ ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
04.08.2013, 18:10     Деструктор шаблона описанный в отдельном файле не линкуется. Почему? #2
Не разбиваются шаблоны класса на файлы
Rebelition
0 / 0 / 0
Регистрация: 30.05.2013
Сообщений: 21
04.08.2013, 18:11     Деструктор шаблона описанный в отдельном файле не линкуется. Почему? #3
Шаблоны не являются функциями, поэтому их нельзя компилировать отдельно (ранее этот запрет обходился ключевым словом export, но в с++11 это слово в стандарт не входит).
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru