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

Проблема с линковкой - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Алгоритмы отображения большого текста на экране http://www.cyberforum.ru/cpp-beginners/thread343724.html
Привет всем! Может быть кто знает, есть какие-нибудь алгоритмы, позволяющие быстро отображать тексты больших размеров? Дело в том, что пишу читалку fb2, и там нужно выводить отпарсиный текст на экран (текст парсится в html формат). Тексты разные - например Л.Н. Толстой - Война и мир. Книга большая и если в лоб делать, то процесс отображения может занимать много времени. Уже намучился с этим, не...
C++ вектор типа string Привет! Пожскажите пожалуйста как в векторе типа string определить размер каждого входящего в него слова. Это как- то через опе6ратор стрелки (или точки) и функции size() ? :-) http://www.cyberforum.ru/cpp-beginners/thread343710.html
можно ли while() и for() отнести к прерываниям? C++
сабж...
C++ Задача на создание карточной игры.
Здравствуйте. Собственно, само задание звучит, как "Написать программу, которая на основе классов реализует карточную игру Блэк-Джек.". Главная проблема в том, как реализовать взаимодействие между игроками и казино ( очередность ходов, и т.д. ). Что лучше применить в этом случае? Раньше не сталкивался с подобной проблемой. з.ы. Вот наброски: Заголовочный файл: #pragma once //...
C++ Таблица умножения которая ствит оценки http://www.cyberforum.ru/cpp-beginners/thread343693.html
Как сделать чтобы С++ считывал количество ошибок в таблице умножения и ставил оценки?Вот код: #include<stdio.h> #include<iostream.h> int main(int Arg,char* pszArgs) { int a;
C++ Ошибка компилирования... Мб кто подскажет: при компиляции вылазит "Не удается открыть файл предкомпилированный заголовок: Debug\f1.pch: No such file or directory". Вроде бы всё понятно, но 15 мин назад всё отлично компилировалось. Создавалось консольное приложение с предкомпилированным заголовком . Visual studio 2010. Заранее спасибо подробнее

Показать сообщение отдельно
Napalm256
2 / 2 / 0
Регистрация: 18.08.2011
Сообщений: 17
20.08.2011, 19:31  [ТС]     Проблема с линковкой
Блин я уже запарился: если что то меняю - то уже что то новое не нравиться компилятору, ошибки гуглил, но у всех разные ситуации... Вот исходник шаблона списка:
Список ошибок


List.h||In constructor 'List<Particle, Game>::ls::ls()':|
List.h|11|instantiated from 'void List<Type, Object>::push_front(Type) [with Type = Particle, Object = Game]'|
Core.cpp|172|instantiated from here|
Core.cpp 172 стока
C++
1
particles.push_front(Particle(x, y, rand()%500 - 250, rand()%200, 0.0, 200.0));
List.h|11|error: no matching function for call to 'Particle::Particle()'|
Core.cpp|9|note: candidates are: Particle::Particle(float, float, float, float, float, float)|
Core.h|33|note: Particle::Particle(const Particle&)|
List.h||In member function 'void List<Type, Object>::push_front(Type) [with Type = Particle, Object = Game]':|
List.h|97|note: synthesized method 'List<Particle, Game>::ls::ls()' first required here |
List.h||In member function 'void List<Type, Object>::forIn(void (Object::*)(Type&)) [with Type = Particle, Object = Game]':|
Core.cpp|218|instantiated from here|
List.h|206|error: must use '.*' or '->*' to call pointer-to-member function in 'fun (...)', e.g. '(... ->* fun) (...)'|

||=== Build finished: 2 errors, 0 warnings ===|


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
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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
#ifndef LIST_H_INCLUDED
#define LIST_H_INCLUDED
 
template <class Type, class Object> class List
{
public:
    struct ls    // реализация динамического списка
    {
        Type data;
        ls *next; // указатель на следующий елемент списка
    };
    ls *p1;
    Type *error;
    static Type err;
    typedef void (Object::* pListFunc)(Type&);
    pListFunc pf;
    List();
    ~List();
 
    void push_back(Type); // поместить в конец
    void pop_back();  // изъять с конца
    void push_front(Type); // аналогично
    void pop_front();
    void remove(long); //удалить элемент по индексу
    void insert(Type,long); // тоже только наоборот
    long size(); // узнать размер списка
    void forIn(void (Object::*)(Type&)); // реализация for переменная in список
    void forIn(void (*)(Type&));
 
    Type &operator[](const long); // обращение по индексу к єлементам
};
 
//template <class Type, class Object> Type *List<Type,Object>::err = NULL;
 
 
// LIST_INPLAMENTATION
 
template <class Type, class Object> List<Type, Object>::List()
{
    error = &err;
    p1 = NULL;
}
 
template <class Type, class Object> List<Type,Object>::~List()
{
    ls *ptmp = p1,*pdel;
    while(ptmp)
    {
        pdel = ptmp;
        ptmp = ptmp->next;
        delete pdel;
    }
    delete ptmp;
}
 
template <class Type, class Object> void List<Type, Object>::push_back(Type data)
{
    if(!p1)
    {
        p1 = new ls;
        p1->data = data;
        p1->next = NULL;
        //cout << "push back first element " << p1->data << "\n";
    } else
    {
        ls *ptmp = p1;
        while(ptmp->next)
            ptmp = ptmp->next;
        ptmp->next = new ls;
        ptmp = ptmp->next;
        ptmp->data = data;
        ptmp->next = NULL;
        //cout << "push back " << ptmp->data << "\n";
    }
}
 
template <class Type, class Object> void List<Type, Object>::pop_back()
{
    ls *ptmp = p1, *ptmpLast = p1;
    while(ptmp->next)
    {
        ptmpLast = ptmp;
        ptmp = ptmp->next;
    }
    ptmpLast->next = NULL;
    delete ptmp;
}
 
template <class Type, class Object> void List<Type, Object>::push_front(Type data)
{
    if(!p1)
    {
        p1 = new ls;
        p1->data = data;
        p1->next = NULL;
        return;
    }
    ls *ptmp = new ls;
    ptmp->next = p1;
    ptmp->data = data;
    p1 = ptmp;
}
 
template <class Type, class Object> void List<Type, Object>::pop_front()
{
    if(!p1)
        return;
    ls *ptmp = p1->next;
    delete p1;
    p1 = ptmp;
}
 
template <class Type, class Object> void List<Type, Object>::remove(long i)
{
    if(!p1)
        return;
 
    ls *ptmp = p1,*plast = p1;
    long j = 0;
 
    while(ptmp)
    {
        if(j==i && ptmp)
        {
            plast->next = ptmp->next;
            delete ptmp;
            return;
        }
        j++;
        plast = ptmp;
        ptmp = ptmp->next;
    }
    //cout << "*** ERROR: out of memory List[" << i << "]\n";
}
 
template <class Type, class Object> void List<Type, Object>::insert(Type data, long i)
{
    if(!p1)
    {
        p1 = new ls;
        p1->data = data;
        p1->next = NULL;
        return;
    }
 
    ls *ptmp = p1;
    long j = 0;
 
    while(ptmp)
    {
        if(j==i && ptmp)
        {
            ls *pin = ptmp->next;
            ptmp->next = new ls;
            ptmp = ptmp->next;
            ptmp->data = data;
            ptmp->next = pin;
            return;
        }
        j++;
        ptmp = ptmp->next;
    }
    //cout << "*** ERROR: out of memory List[" << i << "]\n";
}
 
template <class Type, class Object> long List<Type, Object>::size()
{
    ls *ptmp = p1;
    long i = 0;
    while(ptmp)
    {
        ptmp = ptmp->next;
        i++;
    }
    return i;
}
 
template <class Type, class Object> Type &List<Type, Object>::operator[](const long i)
{
    ls *ptmp = p1;
    long j = 0;
 
    while(ptmp)
    {
        if(j==i && ptmp)
        {
            //Type *p = &ptmp->data;
            return ptmp->data;
        }
        j++;
        ptmp = ptmp->next;
    }
    //cout << "*** ERROR: out of memory List[" << i << "]\n";
    return &err;
}
 
template <class Type, class Object> void List<Type, Object>::forIn(void (Object::*fun)(Type &data))
{
    ls *ptmp = p1;
    while(ptmp)
    {
        fun(ptmp->data);
        ptmp = ptmp->next;
    }
}
 
template <class Type, class Object> void List<Type, Object>::forIn(void (*fun)(Type &data))
{
    ls *ptmp = p1;
    while(ptmp)
    {
        fun(ptmp->data);
        ptmp = ptmp->next;
    }
}
 
// END_OF_LIST_INPLAMENTATION
 
 
#endif // LIST_H_INCLUDED


Сразу скажу для тех кто считает что это ересь и можно вместо списка использовать вектор: надо было реализовать функцию на подобии for <переменная> in <список> потому что идёт работа с частицами, а их очень много (больше тысячи) тесть я избегаю повторного прохода по списку при индексному доступу, а так говорите если что ...
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru