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

Template - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Ввод данных в таблицу http://www.cyberforum.ru/cpp-beginners/thread652384.html
Добрый день. Задача: создать таблицу из двух рядков, в каждом из которых по 4 ячейки информации, информация вводиться пользователем в двух инпутах. #include <windows.h> #include <iostream> #include <iomanip> #include <string> using namespace std; void Information_Rows(int info1, int info2, int info3, int info4) {
C++ Выбором материала и советов по "крестикам-ноликам" Здравствуйте. Я студент IT и делаю курсовую. Мне надо написать игру "крестики-нолики" на C++ Builder или Delphi Builder. Я выбрал c++, т.к. считаю, что он мне даст программисткого опыта побольше + был опыт делания лаб на C ну и перспектив я вижу больше в с++ чем в делфи. Так вот, дело в том, что я не знаю с чего начать. До этого я лишь кодил на php/js + html. Как мне можно быстрее въехать в... http://www.cyberforum.ru/cpp-beginners/thread652383.html
Вещественная матрица C++
Помогите реализовать Вещественную матрицу и след. ее пункты. при помощи UnitTest's: Описать класс, реализующий тип данных "Вещественная матрица". Класс должен реализо- вывать следующие возможности: ∙ матрица произвольного размера с динамическим выделением памяти; ∙ сложение двух матриц и матрицы с числом (оператор +); ∙ сложение двух матриц и матрицы с числом с присваиванием (оператор +=);...
Почему цикл выполняется бесконечно? C++
Объясните кто-нибудь, почему этот код #include <iostream> #include <cstdlib> int main() { int array1; srand((unsigned)time(NULL)); for (int i = 0; i < 100; ++i) {
C++ Найти углы в треугольнике http://www.cyberforum.ru/cpp-beginners/thread652353.html
Стороны с горем пополам я смог найти, по ним нужно найти углы. Заранее благодарю. #include<iostream.h> #include<math.h> #include<windows.h> #include<cmath> char bufRus; char* Rus(const char* text) { CharToOem(text, bufRus);
C++ Найти квадратную матрицу из нулей На чёрно-белом изображении размером A строк x B столбцов необходимо найти полностью белый квадрат с максимальной площадью. В первой строке входного файла input.txt записаны два целых числа - количество строк A и столбцов B в изображении. В следующих A строках записаны значения цвета в количестве B без пробелов: 0 - чётный, 1 - белый. Все получаемые значения целые и по модулю не превосходят... подробнее

Показать сообщение отдельно
Penoplast
3 / 3 / 1
Регистрация: 14.09.2012
Сообщений: 84

Template - C++

15.09.2012, 17:50. Просмотров 537. Ответов 1
Метки (Все метки)

Пишу на VS10.

Имеется 3 файла:

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
#ifndef LIST_H
#define LIST_H  
 
//DEList
 
 
template <class DataType>
class List
{
    class Item
    {
    public:
        DataType data;
        Item *prev;
        Item *next;
 
        Item () {prev = 0; next = 0;}
    };
 
    Item *pHead;
    Item *pTail;
 
public:
    List  ();
    ~List ();
 
    void push_front (DataType type);
    void push_back  (DataType type);
 
    inline DataType front () {return pHead->data;}
    inline DataType back  () {return pTail->data;}
 
    DataType delete_front (int count = 1);
    DataType delete_back  (int count = 1);
};
 
 
 
#endif


List.cpp
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#include "List.h"
 
template <class DataType>
List<DataType>::List()
{
    pHead = 0;
    pTail = 0;  
};
 
 
template <class DataType>
List<DataType>::~List()
{
    if (pHead != 0)
    {
        while (pHead != pTail)
        {
            pHead = pHead->prev;
            delete (pHead->next);
        }
        delete (pHead);     
    }   
};
 
 
template <class DataType>
void List<DataType>::push_front (DataType Type)
{
    if (pHead == 0)
    {
        Item *pTemp;
        pTemp = new (Item);
        pTemp->data = Type;
        pTemp->next = 0;
        pTemp->prev = 0;
        pHead = pTail = pTemp;
    }
    else
    {
        Item *pTemp;
        pTemp = new (Item);
        pTemp->data = Type;
        pTemp->prev = pHead;
        pHead->next = pTemp;
        pHead = pTemp;
    }
};
 
template <class DataType>
void List<DataType>::push_back (DataType Type)
{
    if (pTail == 0)
    {
        Item *pTemp;
        pTemp = new (Item);
        pTemp->data = Type;
        pTemp->next = 0;
        pTemp->prev = 0;
        pHead = pTail = pTemp;
    }
    else
    {
        Item *pTemp;
        pTemp = new (Item);
        pTemp->data = Type;
        pTemp->next = pTail;
        pTail->prev = pTemp;
        pTail = pTemp;
    }
};
 
template <class DataType>
DataType List<DataType>::delete_front (int count)
    //count default = 1
    //return:
    //0 - it's OKAY
    //1 - List is Empty
{
    if (pHead != 0)
    {
        while ((count != 0) && (pHead != pTail))
        {
            pHead = pHead->prev;
            delete (pHead->next);
            --count;
        }
 
        if ((count != 0) && (pHead == pTail))
        {
            delete (pHead);
            pHead = pTail = 0;
            return 1;
        }
    }
    else
        return 1;
 
    return 0;
}
 
template <class DataType>
DataType List<DataType>::delete_back (int count)
    //count default = 1
    //return:
    //0 - it's OKAY
    //1 - List is Empty
{
    if (pTail != 0)
    {
        while ((count != 0) && (pHead != pTail))
        {
            pTail = pTail->next;
            delete (pTail->prev);
            --count;
        }
 
        if ((count != 0) && (pHead == pTail))
        {
            delete (pTail);
            pHead = pTail = 0;
            return 1;
        }
    }
    else
        return 1;
 
    return 0;
}


main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include "List.h"
#include <iostream>
 
int main(/*int argc, const char *argv[]*/)
{
    List<int> lst;
    lst.push_front(2);
    lst.push_front(4);
    lst.push_front(1);
    lst.push_front(87);
    lst.push_back(619);
    lst.delete_front();
    lst.delete_front(70);
    lst.push_back(55);
 
    return 0;
}
Далее, при попытке собрать это, линкер ругается:

main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall List<int>::~List<int>(void)" (??1?$List@H@@QAE@XZ) в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: int __thiscall List<int>::delete_front(int)" (?delete_front@?$List@H@@QAEHH@Z) в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: void __thiscall List<int>:ush_back(int)" (?push_back@?$List@H@@QAEXH@Z) в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: void __thiscall List<int>:ush_front(int)" (?push_front@?$List@H@@QAEXH@Z) в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall List<int>::List<int>(void)" (??0?$List@H@@QAE@XZ) в функции _main
1>D:\Projects\OOP_list\Debug\OOP_list.exe : fatal error LNK1120: 5 неразрешенных внешних элементов

Если не использовать шаблоны то все ок, но без них не вариант.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru