6.08.2015 / 08:32 | |
DominaN Пользователь Сейчас: Offline
Имя: Кирилл Откуда: Смоленск Регистрация: 28.09.2011
| Вы б хоть посмотрели что-там |
6.08.2015 / 18:56 | |
Bogdan-G Пользователь Сейчас: Offline
Имя: Богдан Откуда: Москва Регистрация: 13.02.2011
| Ксакеп, ну русификация это хлрошо |
6.08.2015 / 19:47 | |
Ксакеп Модератор форума Сейчас: Offline
Регистрация: 20.06.2012
| Bogdan-G, ты просто не видел ошибку, вывод которой составляет 20 Мб.
|
6.08.2015 / 20:15 | |
Naik Пользователь Сейчас: Offline
Имя: %name% Регистрация: 14.03.2010
| Да, вывод *понятных* ошибок не самая сильная сторона с++ |
6.08.2015 / 23:42 | |
Bogdan-G Пользователь Сейчас: Offline
Имя: Богдан Откуда: Москва Регистрация: 13.02.2011
| Ксакеп, ну то что она упорота или не совсем ясна это да |
14.08.2015 / 20:11 | |
Banschey Пользователь Сейчас: Offline
Имя: Banschey Откуда: Донецк, Украина Регистрация: 22.03.2015
| Доброго времени суток всем, извиняюсь за то что пишу не по теме, может кто посоветовать литературу или примеры физ движка( простого:Солид объекты). За рание спасибо |
15.08.2015 / 07:17 | |
aRiGaTo Пользователь Сейчас: Offline
Имя: Snork Откуда: Yerevan Регистрация: 03.02.2010
| Banschey, Grant Palmer - Physics for Game Programmers
__________________
don't tread on me |
23.09.2015 / 14:26 | |
Naik Пользователь Сейчас: Offline
Имя: %name% Регистрация: 14.03.2010
| Фигня какая-то это, а не ЯП list.h template <typename T>
class List {
public:
List(int i);
};
list.cpp #include "list.h"
#include <iostream>
using namespace std;
template <typename T>
List<T>::List(int i) {
cout << "List constructor" << endl;
}
main.cpp #include <iostream>
#include "util/list.h"
using namespace std;
int main() {
List<char> *list = new List<char>(1);
delete list;
return 0;
}
При линковке /main.cpp:7: error: undefined reference to `List<char>::List(int)' работает только если инклюдить list.cpp Изменено Naik (23.09 / 14:28) (всего 1 раз) |
23.09.2015 / 14:58 | |
Freddy Пользователь Сейчас: Offline
Имя: Игорь Откуда: Воронеж Регистрация: 30.01.2010
| Naik, так нельзя делать, потому что компилятор, когда обрабатывает шаблонную функцию, компилирует её для каждого типа данных, а не производит магию вроде "откомпилирую как-то раз, создам некий общий код, а потом конкретный тип в рантайме как-то работать будет". Коряво объяснил, конечно, вот ссылка на нужный абзац в учебнике по C++ Standard Library: https://books.google.ru/books?...ions.%22&f=falseСделать можешь так: #ifndef __LIST_H__
#define __LIST_H__
template <typename T>
class List {
public:
List(int i);
};
#include "list.tpp"
#endif //__LIST_H__
(Обычно когда такой трюк с шаблонами используют, файл с реализацией называют *.tpp, а не *.cpp) |
23.09.2015 / 16:47 | |
Naik Пользователь Сейчас: Offline
Имя: %name% Регистрация: 14.03.2010
| Freddy, ну смысла в этом 0, написал все в хидере, но смысл хидера как бы не в этом Ну ладно, напишу и забуду про этот с++ Неужели компилятор не может посмотреть использования кода и сам все сгенерировать? Нет же, ему нужен факт, что реализации именно в хидере Изменено Naik (23.09 / 16:50) (всего 1 раз) |