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

шаблоны и связь между файлами в проекте - C++

Восстановить пароль Регистрация
 
Jino_
2 / 2 / 1
Регистрация: 26.06.2010
Сообщений: 37
11.12.2010, 15:14     шаблоны и связь между файлами в проекте #1
Собственно, проблема в следующем:
если убрать комментарии в файле list.h, то все нормально компилируется.
если убрать комментарии в файле list.cpp, то в point.cpp выводится ошибка "undefined reference"

в принципе, проблема решаема, например, подключением в point.h вместо list.h list.cpp, но стало интересно почему появляется эта ошибка?

point.h

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include "list.h"
 
class Point
{
    private:
    int x;
    int y;
 
    public:
    Point(int _x, int _y, List<Point> l);
 
 
};
point.cpp

C++
1
2
3
4
5
6
7
8
9
#include "point.h"
 
Point::Point(int _x, int _y, List<Point> l)
{
    x = _x;
    y = _y;
 
    l.add(this); //Error
}
list.h
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
#include <stddef.h>
 
template <class Item> class List
{
    struct ListItem
    {
        Item* i;
        ListItem* next;
        ListItem(Item* _i){i = _i; next = NULL;}
    };
 
    private:
    ListItem* first;
    ListItem* end;
 
    public:
    List(){first = NULL; end = NULL;}
    void add(Item* _i);
};
 
/*template <class Item>void List<Item>::add(Item* _i)
{
    ListItem* t = new ListItem(_i);
 
 
    if(!first)
    {
        end->next = t;
        end = t;
    } else
    {
        first = t;
        end = t;
    }
 
 
}
 
*/
list.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "list.h"
 
/*template <class Item>void List<Item>::add(Item* _i)
{
    ListItem* t = new ListItem(_i);
 
 
    if(!first)
    {
        end->next = t;
        end = t;
    } else
    {
        first = t;
        end = t;
    }
 
 
}
 
*/
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.12.2010, 15:14     шаблоны и связь между файлами в проекте
Посмотрите здесь:

Связь между функцией и выбором случайного числа C++
C++ Композиционная связь между шаблонами. работа дестракторов
в проекте - надо в проекте win32api вынести все в другой *cpp* а не получаеться C++
Связь между потомками класса C++
Граф - существует ли связь между двумя вершинами в обоих направлениях C++
Не удается наладить связь между h и cpp файлом C++
Связь между программами C++
Связь между 2 классами C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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