
Ned Ogl
28.10.2016
18:49:33
https://bitbucket.org/serafimati/matrixlib/
rape me
только ногами не пинайте

Dumitru
28.10.2016
18:57:13
А почему все в хэдере?
Я спрашиваю для себя, может так и надо делать)

Google

Ned Ogl
28.10.2016
18:57:26
темплейты - да
иначе будет хедер тут, реализация там, использование сям

Rafael
28.10.2016
18:58:05
Пожалуй тоже поревьюжу твой кодец

Dumitru
28.10.2016
18:58:10
А там же все шаблон

Ned Ogl
28.10.2016
18:58:21
компиль не умеет в темплейты, ему надо знать, что ты туда подставил
мне так объяснил кто-то из здешних

Dumitru
28.10.2016
18:58:42
Это я понял, просто не заметил что там прям везде шаблоны

Ned Ogl
28.10.2016
18:59:05
у меня template <class T> на копипастере стоит)

Rafael
28.10.2016
18:59:35
Это кстати отчасти удобно
Когда нужно ограничить типы которые можно использовать
А почему у тебя 8 пробелов это отступ, а не 4?

Google

Ned Ogl
28.10.2016
19:00:26
а ещё, читал недавно, чтобы не было проблем с компоновкой, все инлайны в тот же хедер, где и класс. если реализуешь прямо в классе, метод инлайн по умолчанию. типа так

Rafael
28.10.2016
19:00:47
Ты в деструкторе не освобождаешь память выделуню через new

Ned Ogl
28.10.2016
19:01:15

Vladislav
28.10.2016
19:01:22
логический & вместо &&
https://bitbucket.org/serafimati/matrixlib/src/d0e395e23b9dd30fc1b8664dedf96fc75063b02f/matrixlib.h?at=master&fileviewer=file-view-default#matrixlib.h-132

Rafael
28.10.2016
19:01:27
Возможно я не туда посмотрел

Dumitru
28.10.2016
19:02:24

Alex Фэils?︙
28.10.2016
19:02:26
Ned Ogl , а зачем два класса: row и const row? мб дальше тупо const row язать?

Ned Ogl
28.10.2016
19:03:05

Rafael
28.10.2016
19:03:43
Просто лучше используйте умный указатель

Ned Ogl
28.10.2016
19:03:53
и вообще, это deprecated фишка для тех кто любит [][]

Alex Фэils?︙
28.10.2016
19:04:00
class row{
private: Matrix<T> \*const parent;
T \*const prow;
public:
row(Matrix<T> \*const _parent, T \*const _prow);
~row();
T& operator [](const int y);
const T& operator [](const int y) const;
};

Dumitru
28.10.2016
19:04:00

Ned Ogl
28.10.2016
19:04:31
ничего, я сделяю

Rafael
28.10.2016
19:04:57

Dumitru
28.10.2016
19:04:57
Кстати а зачем возвращать ref ? Современный с++ вроде очень оптимально возвращает значение

Ned Ogl
28.10.2016
19:05:14

Google

Rafael
28.10.2016
19:05:17
Просто почитай сначала про rvalue ссылки, потом про move семантику, потом про умные указатели
И про RAII не забудь

Ned Ogl
28.10.2016
19:05:45
у меня это отложено сразу после исключений. вторым делом) спасибо

Dumitru
28.10.2016
19:05:54
Умные указатели очень крутые! Главное не увлечься ) я как-то попался

Ned Ogl
28.10.2016
19:06:06

Rafael
28.10.2016
19:06:11

Dumitru
28.10.2016
19:06:15

Alex Фэils?︙
28.10.2016
19:06:17

Rafael
28.10.2016
19:06:20
А зачем классы внутри класса?

Ned Ogl
28.10.2016
19:06:37

Alex Фэils?︙
28.10.2016
19:06:41

Rafael
28.10.2016
19:06:58

Dumitru
28.10.2016
19:07:00

Ned Ogl
28.10.2016
19:07:03
ибо вспомогательные, да. тем паче, приват

Dumitru
28.10.2016
19:07:18

Alex Фэils?︙
28.10.2016
19:07:21

Rafael
28.10.2016
19:07:43

Ned Ogl
28.10.2016
19:08:59
такое гораздо проще, потому что у row есть поле T*, где Т - параметр шаблона. было бы тяжко обходить этот вопрос, я уже думал на эту тему

Rafael
28.10.2016
19:09:32
Кстати о шаблонах

Google

Rafael
28.10.2016
19:09:52
Почему ты юзаешь class T, а не typename T
?

Dumitru
28.10.2016
19:10:05
Вроде одно и тоже

Alex Фэils?︙
28.10.2016
19:10:30
const T getElem(const int x, const int y) const;
а чо не
const T &getElem(const int x, const int y) const;

Ned Ogl
28.10.2016
19:11:31

Rafael
28.10.2016
19:12:17
Вроде одно и тоже
насколько я помню тайпнаме использует когда мы хотим показать, что это строенные классы типо инт, дабл и прочее, а класс, когда юзаем кастомные классы

Dumitru
28.10.2016
19:12:34

Ned Ogl
28.10.2016
19:12:40

Admin
ERROR: S client not available

Alex Фэils?︙
28.10.2016
19:12:54
Почему не может?

Dumitru
28.10.2016
19:13:25

Ned Ogl
28.10.2016
19:13:31
тогда не вижу смысла, это не сэкономит ничего
а хз, "лепи конст везде где не вредит"

Alex Фэils?︙
28.10.2016
19:13:45

Rafael
28.10.2016
19:14:36
ксттаи inline вроде деприкатед

Alex Фэils?︙
28.10.2016
19:14:36

Google

Dumitru
28.10.2016
19:14:44

Alex Фэils?︙
28.10.2016
19:14:48

Rafael
28.10.2016
19:14:55
мне ребята из яндекса говорили, что ее нужно юзать ну в оочень крайних случаях
типо компилятор и так норм это обтрабатывает

Alex Фэils?︙
28.10.2016
19:15:10

Dumitru
28.10.2016
19:15:48

Rafael
28.10.2016
19:15:53
не все ж
поэтому только в крайних случаях
и только после профайлинга

Ned Ogl
28.10.2016
19:16:18
хотя мб ты и прав

Alex Фэils?︙
28.10.2016
19:16:59

Rafael
28.10.2016
19:17:18
Matrix<T>::Matrix(const int _rows, const int _cols):
rows(_rows),
cols(_cols){
_name должно юзаться чтобы показать что это внутренняя переменная
а ты пихаешь это как параметры

Alex Фэils?︙
28.10.2016
19:17:43
это стиль кода
Похер
Тут есть замечания посерьещнее

Ned Ogl
28.10.2016
19:17:57

Dumitru
28.10.2016
19:17:59
Сможешь
Ну тогда в чем его смысл?
В каком случае я не смогу поменять возвращаемое значение ?

Ned Ogl
28.10.2016
19:18:01

Alex Фэils?︙
28.10.2016
19:18:15
вперёд!
Я не дочитал пока до конца. Но

Rafael
28.10.2016
19:18:26