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

Ошибка "ссылка на неразрешенный внешний символ" - C++

Восстановить пароль Регистрация
 
mansp
18 / 18 / 0
Регистрация: 07.11.2010
Сообщений: 136
28.04.2011, 22:41     Ошибка "ссылка на неразрешенный внешний символ" #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#ifndef class_H
#define class_H
 
#include "stdafx.h"
#include "iostream"
 
#include "algorithm"
#include "iterator"
 
using namespace std;
 
template <typename Type>class Queue 
{
 
    int front, back;
    int mx;
    Type*data;
public:
    Queue (int mx);
    Queue(const Queue& obj);
    Queue();
    ~Queue();
.....................................
 
};
 
#endif
////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "class.h"
 
/////////////////////конструктори
 
template <typename Type> Queue<Type>::Queue ()
{
    mx= 15;
    data = new Type[mx];
    back =-1; 
    front = 0;
}
template <typename Type> Queue<Type>::Queue (int mx)
{
    this->mx =mx;
    data = new Type[mx];
    back =-1; 
    front = 0;
}
template <typename Type> Queue<Type>::Queue (const Queue& obj)
{
    mx = obj.mx;
    if(mx)
        Data = new Type[mx];
    back = obj.back;
    front = obj.front;
    if(!obj.empty())
        copy(obj.data,obj, data+mx, data);
 
}
template <typename Type> Queue<Type>::~Queue()
{
    delete[]data;
    back =front = 0;
}
 
 
...........................................................................
/////////////////////////////////////////////////////////////////////////////////////////////
int _tmain(int argc, _TCHAR* argv[])
{
 
     Queue <int> q1(15);
    
    system("pause");
 
    return 0;
}
вылетает ошибка при компиляции
lr 12.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall Queue<int>::~Queue<int>(void)" (??1?$Queue@H@@QAE@XZ) в функции _wmain
lr 12.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall Queue<int>::Queue<int>(int)" (??0?$Queue@H@@QAE@H@Z) в функции _wmain
E:\AMP LR\lr 12\Debug\lr 12.exe : fatal error LNK1120: 2 неразрешенных внешних элементов
в чём проблема? конструкторы ведь я прописал...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ma3a
Эксперт C++
612 / 456 / 31
Регистрация: 28.01.2011
Сообщений: 605
28.04.2011, 22:45     Ошибка "ссылка на неразрешенный внешний символ" #2
Для шаблонов описание и реализация должны находиться в одном файле, иначе компилироваться не будет.
mansp
18 / 18 / 0
Регистрация: 07.11.2010
Сообщений: 136
29.04.2011, 07:21  [ТС]     Ошибка "ссылка на неразрешенный внешний символ" #3
спасибо.. я то парюсь......

Добавлено через 49 минут
блин опять вылазит.... добавил всё в один хеадер
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
////в классе
...........
friend ostream &operator<<(ostream &s, const Queue<Type>& obj);
............
/////////////реализация
  template <typename Type> ostream operator <<(ostream &s, const Queue<Type>& obj)
{
    cout<<endl;
    if(obj.empty())
        cout<<"\nQueue is empty";
else
{
    for(int i = obj.front ; i=<obj.back; i++)
    {
        if((i+1)==obj.mx)
            i = 0;
        cout<<obj.data[i]<<" ";
    }
}
    return s;
}
error LNK2019: ссылка на неразрешенный внешний символ "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl operator<<(class std::basic_ostream<char,struct std::char_traits<char> > &,class Queue<int> const &)" (??6@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV01@ABV?$Queue@H@@@Z) в функции _wmain
Добавлено через 7 часов 46 минут
неужели никто не знает?
slice
32 / 75 / 4
Регистрация: 04.11.2010
Сообщений: 249
29.04.2011, 07:25     Ошибка "ссылка на неразрешенный внешний символ" #4
Цитата Сообщение от mansp Посмотреть сообщение
ошибка линковки при компиляции
ЛОЛ )) Может быть ошибка линковки при линковке?
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
29.04.2011, 11:51     Ошибка "ссылка на неразрешенный внешний символ" #5
mansp, так как метод вывода в поток это не метод класса Queue, то и определить шаблон ему надо отдельно.
C++
1
friend std::ostream& operator<<<T>(std::ostream& os, const Foo<T>& foo);
Цитата Сообщение от slice Посмотреть сообщение
Может быть ошибка линковки при линковке?
Простите, а при чем еще (кроме линковки) может произойти ошибка линковки?
Yandex
Объявления
29.04.2011, 11:51     Ошибка "ссылка на неразрешенный внешний символ"
Ответ Создать тему
Опции темы

Текущее время: 02:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru