Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Jino_
2 / 2 / 1
Регистрация: 26.06.2010
Сообщений: 37
#1

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

11.12.2010, 15:14. Просмотров 630. Ответов 0
Метки нет (Все метки)

Собственно, проблема в следующем:
если убрать комментарии в файле 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;
    }
 
 
}
 
*/
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.12.2010, 15:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос шаблоны и связь между файлами в проекте (C++):

Связь заголовочного и исходного файлов в проекте - C++
Добрый день! Учу многофайловые программы. Определение функции пишу в заголовочном файле. Вызов в делаю в исходном коде. Это правильно? ...

Шаблоны. В чем разница между созданием экземпляра и специализацией? - C++
Протер глаза о Прата, не могу доехать в чем разница между созданием экземпляра и специализацией. Черканите волшебное слово, что бы сразу...

Связь между программами - C++
У меня есть одна программа на C++. В ней следовательно есть несколько переменных (например int i = 3 и String c = &quot;test&quot;). Необходимо...

Связь между 2 классами - C++
Есть 2 класса: Class A { private: B** arrayB;/нужно раньше объявить класс И ... }; A* Object

Функции: связь между функциями - C++
Здравствуйте уважаемые программисты! Есть задача, в которой по условию вводишь время от начала 12 часов дня до 00.00, и она должна...

Связь между потомками класса - C++
Здравствуйте! У меня проблема: имеется класс, и у него есть 2 класса-потомки. Мне нужно с экземпляра первого класса-потомка получить...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.12.2010, 15:14
Привет! Вот еще темы с ответами:

Композиционная связь между шаблонами. работа дестракторов - C++
Есть например такой проект. Вопросы в следующем. Как происходит процесс работы дестрактора между этими классами ? Правильно ли...

Связь между функцией и выбором случайного числа - C++
Здравствуйте! Я не знаю как связать функцию вычисления простоты числа с выбором раномного числа, т.е. мне нужно выбрать простое рандомное...

в проекте - надо в проекте win32api вынести все в другой *cpp* а не получаеться - C++
определил функцию в другом спп и в основном ругается компилятор

Граф - существует ли связь между двумя вершинами в обоих направлениях - C++
В файле задан ориентированный граф. В первой строчке записано число N, которое обозначает кол-во вершин в графе. Во второй строчке записано...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

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